บิตเฉลี่ย: ความท้าทายโดยเฉลี่ย


30

รับจำนวนเต็ม N> = 1 ส่งออกจำนวนเฉลี่ยของบิตในจำนวนเต็มตั้งแต่ 0 ถึง N - 1

สเปค

  • เอาต์พุตสามารถคำนวณเป็นผลรวมของจำนวนบิตในการแทนเลขฐานสองของแต่ละจำนวนเต็มตั้งแต่ 0 ถึง N-1 หารด้วย N
  • การแทนค่าไบนารีของจำนวนเต็มไม่มีศูนย์นำหน้าในบริบทนี้ยกเว้นศูนย์ซึ่งแสดงเป็น 0 ในไบนารี
  • ผลลัพธ์ควรมีความแม่นยำถึงตัวเลขที่มีนัยสำคัญอย่างน้อย 7 ตัว

ตัวอย่าง

N = 6

0: 0   : 1 bit
1: 1   : 1 bit
2: 10  : 2 bits
3: 11  : 2 bits
4: 100 : 3 bits
5: 101 : 3 bits

จำนวนเฉลี่ยของบิต = (1 + 1 + 2 + 2 + 3 + 3) / 6 = 2

กรณีทดสอบ

อินพุต => เอาต์พุต

1 => 1
2 => 1
3 => 1.3333333
4 => 1.5
5 => 1.8
6 => 2
7 => 2.1428571

ตัวอย่างกระดานแต้มนำ

(จากที่นี่ )

โปรดทราบว่าผลรวม (ก่อนการหารเพื่อหาค่าเฉลี่ย) เป็นลำดับใน OEIS


6
ชื่อที่ดีมากpunny
Rɪᴋᴇʀ

3
สำหรับผู้ที่ไม่ทราบว่าฉันมีแนวโน้มที่จะแก้ปัญหาด้วยคำอธิบาย
trichoplax

4
เล่นไม่พอคุณต้องเพิ่มอีกนิดหน่อยเพื่อให้เกมนี้สมบูรณ์แบบ
clismique

1
ฉันสมมติว่าโดย "แต่ละหมายเลข" คุณหมายถึง "แต่ละจำนวนเต็ม "?
Cyoce

@Cyoce ใช่ขอบคุณสำหรับการชี้ให้เห็นว่า - ฉันได้แก้ไขเพื่อชี้แจง
trichoplax

คำตอบ:


13

Pyth, 6 ไบต์

.Oml.B

ลองมันออนไลน์ได้ที่นี่

.Oml.BdUQ              Filling in implict vars

.O                     Average of list
 m   UQ                Map over [0..input)
  l                    Length of
   .B                  Binary string representation of int
    d                  Lambda var

ร่วมสถานที่แรก แต่คุณไม่ได้ปรากฏบนกระดานแต้มนำ - ฉันได้ทำการแก้ไขเล็กน้อยในส่วนหัวเพื่อแก้ไข
trichoplax


7

อ็อกเทฟ 29 ไบต์

@(n)1+sum(fix(log2(1:n-1)))/n

คำอธิบาย

              log2(1:n-1)       % log2 of numbers in range [1..n-1]
                                % why no 0? because log2(0) = -Inf  :/
          fix(           )      % floor (more or less, for positive numbers)
      sum(                )     % sum... wait, didn't we miss a +1 somewhere?
                                % and what about that missing 0?
                           /n   % divide by n for the mean
    1+                          % and add (1/n) for each of the n bit lengths 
                                % (including 0!)

เรียกใช้ตัวอย่างในideone


6

Python 3, 43 ไบต์

def f(n):x=len(bin(n))-2;return(2-2**x)/n+x

ทำให้การใช้สูตรบนหน้า OEIS xน่าแปลกที่ฟังก์ชั่นที่มีชื่อเป็นอย่างใดที่ถูกกว่าที่นี่เพราะมอบหมายให้

ทางเลือกวิธี 46 ไบต์:

lambda n:-~sum(map(int.bit_length,range(n)))/n

น่าเสียดายที่-~มีความจำเป็นเนื่องจาก(0).bit_length()เป็น0แต่ถึงอย่างนั้นมันก็คงจะเป็นไบต์นานเกินไป


6

Julia, 27 ไบต์

n->endof(prod(bin,0:n-1))/n

ลองออนไลน์!

มันทำงานอย่างไร

เนื่องจาก*เป็นสตริงการต่อข้อมูลใน Julia คุณprodสามารถใช้เพื่อเชื่อมอาเรย์ของสตริงได้ มันเลือกที่จะใช้ฟังก์ชั่นเป็นอาร์กิวเมนต์แรกที่มันจับคู่หนึ่งก่อนที่จะ "ผลิตภัณฑ์" ที่แท้จริงดังนั้นจึงprod(bin,0:n-1)เป็นสตริงของการเป็นตัวแทนไบนารีของจำนวนเต็มทั้งหมดในช่วงที่ต้องการ การใช้ความยาวกับendofและหารด้วยnให้ค่าเฉลี่ย


5

จูเลีย 28 ไบต์

n->mean(ceil(log2([2;2:n])))

เนื่องจากbinไม่ได้ทำแผนที่โดยอัตโนมัติผ่านอาร์เรย์ที่เรากำลังใช้จะได้รับจำนวนบิตในceil(log2(n)) n-1สิ่งนี้ได้ผลเป็นอย่างดีเนื่องจากa:bเครื่องหมายของ Julia นั้นครอบคลุมทั้งสองด้านดังนั้น2:nมีช่วงตั้งแต่ 2 ถึงnแต่เราคำนวณจำนวนบิตสำหรับตัวเลขในช่วง1:n-1จริง ๆ น่าเสียดายที่เราจำเป็นต้องมีการเพิ่ม2บัญชีเป็น 0

ลองออนไลน์!


5

MATL, 9 ไบต์

q:ZlksG/Q

ลองออนไลน์!

รุ่นที่แก้ไขพร้อมกรณีทดสอบทั้งหมด

คำอธิบาย

    % Implicitly grab input (N)
q:  % Create array from 1:N-1
Zl  % Compute log2 for each element of the array
k   % Round down to the nearest integer
s   % Sum all values in the array
G   % Explicitly grab input again
/   % Divide by the input
Q   % Add 1 to account for 0 in [0, ... N - 1]
    % Implicitly display the result

Snap !! (ฟิลเลอร์)
David

@ David ที่จริงแล้วของคุณถูกต้อง การทำสำเนาอินพุตที่จุดเริ่มต้นจะไม่ทำงานสำหรับค่าอื่น ๆ ... คุณต้องการG/Qที่ส่วนท้าย
บีกเกอร์


5

เยลลี่ขนาด 8 ไบต์

ไม่สั้น แต่อัลกอริทึมที่น่าสนใจและการส่งเยลลี่ครั้งแรกของฉัน:

Rl2Ċ»1S÷

R         1 to n
 l2       log2
   Ċ      ceiling
    »1    max of 1 and...
      S   sum
       ÷  divided by n

4

เยลลี่ 10 ไบต์

BL©2*2_÷+®

จากคำแนะนำของ Sp3000

ลองที่นี่

เยลลี่ 11 ไบต์

æḟ2’Ḥ÷_BL$N

ไม่สั้นมาก แต่ฉันต้องการคำแนะนำ

ลองที่นี่

โดยใช้สูตรเดียวกับในคำตอบของ SP3000 (มันไม่ยากที่จะเข้าใจตัวเองโดยการแยกความก้าวหน้าทางเรขาคณิต)


ดูคำตอบ Jelly ของฉันสำหรับการอ้างอิงของคุณ
Leun Nun

@LeakyNun มันใช้วิธีการต่าง ๆ ซึ่งฉันไม่คิดว่ามันจะสั้นกว่าของคุณ แต่_BL$Nดูเหมือนจะค่อนข้างนาน ...
jimmy23013

โดยพื้นฐานแล้วโค้ดของคุณคือ "กำลังที่ใกล้เคียงที่สุดคือ 2, ลบ 1, สองเท่า, หารด้วยอินพุต, ลบความยาวไบนารีของอินพุต, ลบ"?
แม่ชีที่รั่ว

@LeakyNun ใช่ ..
jimmy23013

3
ดีขึ้นเล็กน้อย:BL©2*2_÷+®
Sp3000

4

ชวา 135 95 90 ไบต์

float a(int n){int i=0,t=0;for(;i<n;)t+=Integer.toString(i++,2).length();return t/(n+0f);}

ฉันคิดว่าคุณสามารถกำจัดส่วนต่อประสานและสร้างฟังก์ชันหรือแลมบ์ดาได้ นอกจากนี้คุณสามารถคืนค่าแทนการพิมพ์เพื่อ stdout
Frozn

ตกลงฉันจะนำไปใช้กับกฎเหล่านั้นอีกครั้ง
Shaun Wild

ฉันคิดว่ามันควรจะได้รับอนุญาต เนื่องจาก OP ไม่ได้ระบุอะไรเลยฉันคิดว่ามีการใช้กฎมาตรฐาน I / O
Frozn

ใช่ฟังก์ชั่นดี - คุณไม่จำเป็นต้องใช้โปรแกรมที่สมบูรณ์ โปรดทราบว่ากระดานแต้มนำทำคะแนนในบรรทัดแรกดังนั้นคะแนนของคุณจะแสดงเป็น 135 แทนที่จะเป็น 95
trichoplax

@trichoplax ยังคงเป็นสถานที่สุดท้าย ฉันตำหนิ Java เป็นการส่วนตัว ...
Shaun Wild

3

Python 3, 46 ไบต์

lambda x:sum(len(bin(i))-2for i in range(x))/x

เรียกว่าชอบ

f = lambda x: sum(len(bin(i))-2for i in range(x))/x
print(f(6))
# 2.0

ฉันต้องเปลี่ยนกลับการแก้ไขแผนที่เนื่องจากไม่สามารถป้อนข้อมูลได้ 5 รายการ


3

05AB1E, 9 7 ไบต์

รหัส:

L<bJg¹/

คำอธิบาย:

L<         # range from 0..input-1
  b        # convert numbers to binary
   J       # join list of binary numbers into a string
    g      # get length of string (number of bits)
     ¹/    # divide by input

ลองออนไลน์

แก้ไข: บันทึก 2 ไบต์ด้วย @Adnan


@Adnan: ขอบคุณ! ลืมเกี่ยวกับ J.
Emigna

3

C #, 87 ไบต์

double f(int n){return Enumerable.Range(0,n).Average(i=>Convert.ToString(i,2).Length);}

ฉันเขียนคำตอบ C # เพราะไม่เห็น นี่คือโพสต์แรกของฉันต่อหนึ่งในนี้ดังนั้นโปรดแจ้งให้เราทราบหากฉันทำอะไรผิด


ยินดีต้อนรับสู่การเขียนโปรแกรมปริศนาและรหัสกอล์ฟ นี่เป็นคำตอบแรกที่ดี +1 คุณสามารถเปลี่ยนdoubleเป็นfloatบันทึกหนึ่งไบต์หรือคุณต้องการความแม่นยำหรือไม่
wizzwizz4

2
@ wizzwizz4 ขอบคุณ! ฉันมีความคิดแบบเดียวกัน แต่ค่าเฉลี่ย () คืนค่าเป็นสองเท่า หากฉันเปลี่ยนประเภทผลตอบแทนของฉันให้เป็นแบบลอยตัวฉันต้องโยนค่า double และรับ 7 ไบต์อย่างชัดเจน
raive

2

JavaScript (ES7), 38 32 ไบต์

n=>(l=-~Math.log2(n))-(2**l-2)/n

การใช้สูตรของ @ sp3000 (รุ่นก่อนหน้าเป็นโซลูชันแบบเรียกซ้ำ) รุ่น ES6 สำหรับ 34 ไบต์:

n=>(l=-~Math.log2(n))-((1<<l)-2)/n

คำอธิบายของสูตร: พิจารณากรณีของ N = 55 ถ้าเราเขียนเลขฐานสอง (แนวตั้งเพื่อประหยัดเนื้อที่) เราจะได้รับ:

                                11111111111111111111111
                111111111111111100000000000000001111111
        11111111000000001111111100000000111111110000000
    111100001111000011110000111100001111000011110000111
  11001100110011001100110011001100110011001100110011001
0101010101010101010101010101010101010101010101010101010

ขนาดของสี่เหลี่ยมผืนผ้านี้คือnlดังนั้นค่าเฉลี่ยคือlแต่เราต้องแยกช่องว่างออก ช่องว่างแต่ละแถวมีความยาวเป็นสองเท่าของหน้าที่แล้วดังนั้นผลรวมคือ 2 + 4 + 8 + 16 + 32 = 64 - 2 = 2 l - 2


2

J, 21 17 15 ไบต์

จาก 17 ไบต์ถึง 15 ไบต์ต้องขอบคุณ @Dennis

+/@:%~#@#:"0@i.

ทุกคนสามารถช่วยฉันเล่นกอล์ฟนี้ได้หรือไม่ ...

เวอร์ชันที่ไม่ดี

range        =: i.
length       =: #
binary       =: #:
sum          =: +/
divide       =: %
itself       =: ~
of           =: @
ofall        =: @:
binarylength =: length of binary "0
average      =: sum ofall divide itself
f            =: average binarylength of range

ฉันพยายามวิธีการอื่นโดย stringifying รายการเลขไบนารีและออกมาพร้อมกับ 25 %~>:@#@([:":10#.[:#:i.)-]ไบต์: โซลูชันของคุณดูดีที่สุด
Conor O'Brien

2

Perl 6 ,  34  32 ไบต์

{$_ R/[+] map *.base(2).chars,^$_}

{$_ R/[+] map {(.msb||0)+1},^$_}

คำอธิบาย:

{ 
  $_  # the input
  R/  # divides ( 「$a R/ $b」 is the same as 「$b / $a」 )
  [+] # the sum of:
  map
    {
      (
       .msb # the most significant digit (0 based)
       || 0 # which returns Nil for 「0.msb」 so use 0 instead
            # should be 「(.msb//0)」 but the highlighting gets it wrong
            # it still works because it has the same end result 
      ) 
      + 1   # make it 1 based
    },
    ^$_ # 「0 ..^ $_」 all the numbers up to the input, excluding the input
}

ทดสอบ:

use v6.c;

# give it a name
my &mean-bits = {$_ R/[+] map {(.msb||0)+1},^$_}

for 1..7 {
  say .&mean-bits
}

say '';

say mean-bits(7).perl;
say mean-bits(7).base-repeating(10);
1
1
1.333333
1.5
1.8
2
2.142857

<15/7>
(2. 142857)

2

Dyalog APLขนาด 14 ไบต์

(+/1⌈(⌈2⍟⍳))÷⊢

range ← ⍳
log   ← ⍟
log2  ← 2 log range
ceil  ← ⌈
bits  ← ceil log2
max   ← ⌈
fix0  ← 1 max bits
sum   ← +/
total ← sum fix0
self  ← ⊢
div   ← ÷
mean  ← sum div self

2

Clojure, 71 64 63 ไบต์

ดูเหมือนว่าอัตราส่วนจะโอเคตามรูปแบบตัวเลขใดที่ยอมรับได้ในเอาต์พุต

(fn[n](/(inc(apply +(map #(.bitLength(bigint %))(range n))))n))

  • n = 1 => 1
  • n = 7 => 15/7

ungolfed (และเขียนใหม่เพื่อความสะดวกในการอธิบาย)

(fn [n]
 (->
  (->>
   (range n)                      ;;Get numbers from 0 to N
   (map #(.bitLength (bigint %))) ;;Cast numbers to BigInt so bitLength can be used
   (apply +)                      ;;Sum the results of the mapping
   (inc))                         ;;Increment by 1 since bitLength of 0 is 0
  (/ n)))                         ;;Divide the sum by N

คำตอบเก่าที่ใช้ (ลอย):

(fn[n](float(/(inc(apply +(map #(..(bigint %)bitLength)(range n))))n)))

ผลลัพธ์เป็นเช่น:

  • n = 1 => 1.0
  • n = 7 => 2.142857

คำถามที่ว่าเศษส่วนหรืออัตราส่วนเป็นที่ยอมรับนั้นไม่เคยมีมาก่อน สำหรับความท้าทายนี้ฉันจะยอมรับสิ่งที่จะถึงฉันทามติในสิ่งที่เริ่มต้นควรจะ
trichoplax

1

Minkolang 0.15 , 23 ไบต์

n$z1z[i1+2l$M$Y+]kz$:N.

ลองที่นี่!

คำอธิบาย

n$z                       Take number from input and store it in register (n)
   1                      Push 1 onto the stack
    z[                    For loop that repeats n times
      i1+                 Loop counter + 1
         2l$M             log_2
             $Y           Ceiling
               +          Add top two elements of stack
                ]         Close for loop
                 z$:      Float divide by n
                    N.    Output as number and stop.

การใช้งานที่ตรงไปตรงมาสวย


1

JavaScript ES5, 55 ไบต์

n=>eval(`for(o=0,p=n;n--;o+=n.toString(2).length/p);o`)

คำอธิบาย

n =>   // anonymous function w/ arg `n`
  for( // loop
      o=0,  // initalize bit counter to zero
      p=n   // copy the input
    ;n-- // will decrease input every iteration, will decrease until it's zero
    ;o+=    // add to the bitcounter
        n.toString(2)  // the binary representation of the current itearations's
                     .length // length
        /p   // divided by input copy (to avergage)
   );o       // return o variable  

1

ฮุน 71 ไบต์

|=
r/@
(^div (sun (roll (turn (gulf 0 (dec r)) xeb) add)) (sun r)):.^rq

... ฉันค่อนข้างแน่ใจว่านี่เป็นครั้งแรกที่ฉันใช้แกนจุดลอยตัวของ Hoon อันที่จริงมันเป็นการใช้งานที่เขียนใน Hoon ที่ jets ออกไป SoftFloat เนื่องจากประเภทข้อมูลเฉพาะใน Hoon เป็นอะตอมและเซลล์

rสร้างฟังก์ชั่นที่ใช้อะตอม, สร้างรายการจาก [0 .. (r - 1)] แมปรายการที่บันทึกลอการิทึมฐานสองของตัวเลขจากนั้นจึงพับรายการ++addดังกล่าวด้วย แปลงทั้งผลลัพธ์ของการพับและrถึง@rq(หมายเลขจุดลอยตัวที่มีความแม่นยำในรูปสี่เหลี่ยม) ด้วย++sun:rqแล้วหารทีละอัน

สิ่งที่แปลกประหลาดที่สุดในตัวอย่างนี้คือ:.^rqตอนท้าย a:bใน Hoon แปลว่า "ประเมิน a ในบริบทของ b" ++rqเป็นแกนกลางที่มีการนำไปใช้ที่มีความแม่นยำทั้งรูปแบบเช่นไลบรารี ดังนั้นการวิ่ง(sun 5):rqจึงเหมือนกับการทำ(sun:rq 5)เป็นสิ่งเดียวกับการทำ

โชคดีที่แกนใน Hoon เหมือนตุ๊กตาทำรัง เมื่อคุณประเมินแขน++rqที่จะได้รับหลักที่จะเพิ่ม STDLIB ทั้งหมดให้เป็นอย่างดีเพื่อให้คุณได้รับเพื่อให้ม้วนและเปิดและอ่าวไทยและสิ่งที่สนุกสิ่งแทนการถูกติดอยู่กับเพียง++rqแขนที่กำหนดไว้ใน โชคไม่ดีที่ rq นิยามใหม่++addให้เป็นจุดลอยตัวแทนพร้อมกับไม่ได้rอยู่ในบริบท .(บริบทปัจจุบันทั้งหมด) อย่างไร

เมื่อประเมินนิพจน์ในบริบทคอมไพเลอร์จะค้นหาความลึกของแขนขาก่อน ในกรณีของเราa:[. rq]ก็จะมองในบริบทปัจจุบันทั้งก่อนจะย้ายไปมองในa rqดังนั้นaddจะค้นหาฟังก์ชั่นที่ทำงานกับอะตอมแทนที่จะเป็นตัวเลขทศนิยม ... แต่จะทำdivเช่นนั้น ฮุนยังมีคุณสมบัติที่ใช้^nameจะไม่สนใจการอ้างอิงที่พบครั้งแรกและมองหาที่สอง

จากนั้นก็เพียงแค่ใช้น้ำตาล syntatic ของa^bเท่ากับ[a b]ในการประเมินข้อมูลโค้ดของเรามีทั้งบริบทในปัจจุบันของเราและห้องสมุด quad-แม่นยำลอยไม่สนใจ div ++div:rqอะตอมในความโปรดปรานของ

> %.  7
  |=
  r/@
  (^div (sun (roll (turn (gulf 0 (dec r)) xeb) add)) (sun r)):.^rq
.~~~2.1428571428571428571428571428571428

1

ที่จริงแล้ว 7 ไบต์:

;r♂├Σl/

ลองออนไลน์!

คำอธิบาย:

;r♂├Σl/
;        duplicate input
 r       push range(0, n) ([0, n-1])
  ♂├     map binary representation
    Σ    sum (concatenate strings)
     l/  divide length of string (total # of bits) by n

หากไม่ใช่ข้อผิดพลาดที่ฉันเพิ่งค้นพบโซลูชันนี้จะใช้งานได้ 6 ไบต์:

r♂├♂læ

æ เป็นคำสั่ง builtin mean


ไม่ใช่ 10 ไบต์ใช่ไหม ฉันตรวจสอบที่ bytesizematters.com
m654

1
@ m654 ที่จริงแล้วไม่ได้ใช้ UTF-8 มันใช้ CP437 (หรืออะไรทำนองนั้น)
Alex A.

@AlexA โอ้ไม่รู้ด้วยซ้ำว่า
m654

1
@ m654 Bytesizematters ใช้การเข้ารหัสที่สร้างขึ้นอย่างสมบูรณ์ซึ่งไม่มีอยู่ (และไม่สามารถ ) ได้ในทางปฏิบัติ สำหรับ UTF-8 ใช้mothereff.in/byte-counter
Dennis

@Dennis ขอขอบคุณสำหรับข้อมูลที่ฉันจะเก็บไว้ในใจ
m654


1

PowerShell v2 +, 64 ไบต์

param($n)0..($n-1)|%{$o+=[convert]::ToString($_,2).Length};$o/$n

การใช้งานสเปคตรงไปตรงมามาก ลูปจาก0ไปด้วย$n-1 |%{...}แต่ละซ้ำเรา[convert]จำนวนป้อนข้อมูลของเรา$_ไปยังฐานสตริงและใช้เวลาของมัน2 lengthเราสะสมสิ่ง$oต่อไปนี้ใน หลังจากลูปเราก็หาร$o/$nมันทิ้งไว้บนไพพ์ไลน์และเอาท์พุทก็เป็นนัย

ตราบใดที่มันเป็นจริงสั้นกว่าสูตรที่ Sp & ผู้อื่นใช้อยู่เนื่องจาก[math]::Ceiling()และ[math]::Log()ใช้ถ้อยคำขัน ๆ การแปลงฐานใน PowerShell นั้นโชคดี


1

Perl 5.10, 54 ไบต์

for(1..<>){$u+=length sprintf"%b",$_;$n++}$u/=$n;say$u

ค่อนข้างตรงไปตรงมา sprintf"%b"เป็นวิธีที่เรียบร้อยในการแสดงผลตัวเลขในไบนารีใน Perl โดยไม่ต้องใช้ไลบรารีเพิ่มเติม

ลองออนไลน์!


1

CJam, 13 12 11 bytes

ไบต์หนึ่งถูกบันทึกด้วย @ Sp3000 และอีกอย่างต้องขอบคุณ @ jimmy23013

rd_,2fbs,\/

ลองออนไลน์!

คำอธิบาย

ซื่อตรง ใช้คำจำกัดความ

rd      e# read input and convert to double 
_       e# duplicate 
,       e# range from 0 to input minus 1
2fb     e# convert each element of the array to binary 
s       e# convert to string. This flattens the array
,       e# length of array 
\       e# swap 
/       e# divide 


1

Swift, 72 ไบต์

func f(n:Double)->Double{return n<1 ?1:f(n-1)+1+floor(log2(n))}
f(N-1)/N

2
คุณไม่จำเป็นต้องเรียกใช้ฟังก์ชั่นโดยปล่อยให้มันเป็นฟังก์ชั่นที่กำหนดไว้ก็โอเค โพสต์แรกที่ดี
Rɪᴋᴇʀ

1

J, 15 ไบต์

%~[:+/#@#:"0@i.

นี่คือคำกริยา monadic ใช้ดังนี้:

   f =: %~[:+/#@#:"0@i.
   f 7
2.14286

ลองที่นี่!

คำอธิบาย

ฉันใช้ความท้าทายสเป็คอย่างแท้จริง มีวิธีการอื่น ๆ แต่ทั้งหมดกลายเป็นอีกต่อไป

%~[:+/#@#:"0@i.  Input is y
             i.  Range from 0 to y-1.
          "0@    For each number in this range:
      #@           Compute the length of
        #:         its base-2 representation.
  [:+/           Take the sum of the lengths, and
%~               divide by y.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.