เพื่อการเจริญเติบโตของเลขชี้กำลังแทนเลขนัย


18

ท้าทาย

รับฐาน1<b<10และดัชนีt1 , คำที่ส่งออกxt , กำหนดดังนี้:

  • x1=1110
  • xi+1ได้มาจากการแปลงxiเป็นฐานbจากนั้นแปลค่าตัวเลขอีกครั้งในฐาน10
  • ผลลัพธ์ควรอยู่ในฐาน10

เดินผ่านสำหรับฐาน 5 คำ 5 จะเป็น:

  • x1=1110 10
  • 1110=215ดังนั้นx2=2110 10
  • 2110=415ดังนั้นx3=4110 10
  • 4110=1315ดังนั้นx4=13110 10
  • 13110=10115ดังนั้นx5=101110 10
  • เราส่งออกสตริงหรือจำนวนเต็ม"1011"1011

กรณีทดสอบ

หมายเหตุ: สิ่งเหล่านี้เป็นหนึ่งดัชนี

base 2, term 5 --> 1100100111110011010011100010101000011000101001000100011011011010001111011100010000001000010011100011
base 9, term 70 --> 1202167480887
base 8, term 30 --> 4752456545
base 4, term 13 --> 2123103032103331200023103133211223233322200311320011300320320100312133201303003031113021311200322222332322220300332231220022313031200030333132302313012110123012123010113230200132021023101313232010013102221103203031121232122020233303303303211132313213012222331020133

หมายเหตุ

  • ไม่อนุญาตช่องโหว่มาตรฐาน
  • อนุญาตให้ใช้วิธี I / O เริ่มต้นใด ๆ
  • คุณสามารถใช้ดัชนีที่แตกต่างกัน (เช่น 0-indexed, 1-indexed, 2-indexed, ฯลฯ ) สำหรับt
  • คุณอาจจะส่งออกเป็นครั้งแรกtแง่
  • เช่นนี้เป็น , ที่สั้นที่สุดชนะรหัสสำหรับภาษานั้น

1
เราจำเป็นต้องรองรับตัวเลขที่มีขนาดใหญ่ขึ้นหรือต้องเป็นตัวเลขมากถึง 2 ^ 31 - 1 หรือไม่?
ศูนย์รวมแห่งความไม่รู้

1
@EmbodimentofIgnorance สูงสุดของภาษาของคุณ (จำช่องโหว่มาตรฐาน!)
MilkyWay90

มีความท้าทายที่มีฐาน> 10 หรือไม่? (ในกรณีนั้นคุณจะตีความซ้ำ ๆ11ราวกับว่ามันอยู่ในฐานbและแปลงมันกลับไปเป็นฐาน 10 ฯลฯ )
Neil

@ Neil ฉันไม่ได้รวมฐานที่สูงกว่า 10 ตั้งแต่ (ตัวอย่าง) 4aจะไม่เป็นตัวเลขที่ถูกต้องใน base-10
MilkyWay90

คุณจะไม่ได้รับ4aเนื่องจากคุณแปลเลขฐาน 10 หลักเป็นฐานbและแปลงเป็นฐาน 10 ในแต่ละครั้ง (เช่นอีกวิธีหนึ่งจากคำถามนี้)
Neil

คำตอบ:


6

JavaScript (Node.js)ขนาด 40 ไบต์

ขอบคุณ @Neil สำหรับการบันทึก 5 ไบต์ในรุ่นนี้และ 2 ไบต์สำหรับรุ่น BigInt

รับอินพุตเป็น(t)(base)โดยที่tถูกทำดัชนี 1 รายการ

n=>g=(b,x=11)=>--n?g(b,+x.toString(b)):x

ลองออนไลน์!


JavaScript (Node.js) , 48 ไบต์ (รุ่น BigInt)

รับอินพุตเป็น(t)(base)โดยที่tถูกทำดัชนี 1 รายการ ส่งคืน BigInt

n=>g=(b,x=11n)=>--n?g(b,BigInt(x.toString(b))):x

ลองออนไลน์!


คุณต้องการevalในเวอร์ชันแรกหรือไม่? +จะบันทึก 5 ไบต์ ...
Neil

และBigIntบันทึกสองไบต์ในเวอร์ชันที่สองเพราะคุณไม่จำเป็นต้องเพิ่มลงnในสตริง
Neil

(b,t,x=11)=>--t?f(b,t,+x.toString(b)):xสั้นกว่า 1 ถ่าน
Qwertiy

@Qwertiy จริง ๆ แล้ว 1 ไบต์อีกต่อไปเพราะเราต้องการ prepend f=(เนื่องจากฟังก์ชั่นอ้างอิงตัวเอง)
Arnauld

@Annauld, อุ๊ปส์ แล้วอันนี้n=>b=>g=(x=11n)=>--n?g(BigInt(x.toString(b))):x:) ถ้าf(t)(b)()อนุญาตให้โทร
Qwertiy

5

05AB1E , 5 ไบต์

>IF¹B

ลองออนไลน์!

คำอธิบาย

>       # increment <base>
 IF     # <term> times do:
   ¹B   # convert from base-10 to base-<base>

โปรดทราบว่าไม่มีความจำเป็นที่จะเริ่มต้นอย่างชัดเจนลำดับที่11
เริ่มต้นที่base+1และการทำซ้ำเป็นพิเศษจะมีผลในการย้ำแรกให้11


3

Japt , 9 ไบต์

ÆB=sV n
B

ลองมัน

(Two inputs, U and V)
Æ            Range [0..U)
 B=          For each, set B (B is preinitialized to 11) to 
   sV          B's previous value converted to base-V
   n           and back to base-10
B            Print out B's final value

สิ่งนี้จะไม่สามารถส่งออกคำแรกได้หรือไม่
Shaggy

@Shaggy แก้ไขค่าใช้จ่ายสองไบต์
ศูนย์รวมแห่งความไม่รู้

บันทึกไว้อย่างดี :) จะไม่คิดว่าการทำตัวเอง
Shaggy


2

เรติน่า 67 ไบต์

.+,(\d+)
11,$1*
"$+"{`^\d+
*
)+`(?=_.*,(_+))(\1)*(_*)
$#2*_$.3
,_+

tb

.+,(\d+)
11,$1*

x0=11b

"$+"{`

t

^\d+
*

xi

)+`(?=_.*,(_+))(\1)*(_*)
$#2*_$.3

b

,_+

b



2

Clojure , 109 ไบต์

มอบเครดิตให้กับ MilkyWay90 สำหรับการลบ 10 ไบต์โดยการค้นหาพื้นที่ที่ไม่จำเป็น เครดิตเพื่อศูนย์รวมของความไม่รู้สำหรับไบต์อื่นจากพื้นที่ที่ไม่จำเป็นอื่น

แข็งแรงเล่นกอล์ฟ

(defn f([b t](f b t 11))([b t v](if(= t 1)v(f b(dec t)(read-string(.(new BigInteger(str v))(toString b)))))))

Ungolfed

(defn f
  ([base term] (f base term 11))
  ([base term value] (if (= term 1)
                      value
                      (f base (dec term) (read-string (. (new BigInteger (str value)) (toString base)))))))

ฉันคิดว่าไบต์หลักจะถูกบันทึกไว้คือการแสดงออกสำหรับ ... reradixing? สิ่งที่จะเรียกว่า โดยเฉพาะ:

(read-string (. (new BigInteger (str value)) (toString base)))

คุณต้องการที่ว่างเหล่านั้นหรือไม่ คุณสามารถกำจัดช่องว่างได้หรือไม่
MilkyWay90

ไม่ได้เกิดขึ้นกับฉันเพื่อลบช่องว่างที่พวกเขาแยกสิ่งต่าง ๆ ที่สร้างความแตกต่างได้ ดูเหมือน Clojure จะได้รับอนุญาตมากกว่าที่ฉันคิดไว้เล็กน้อย ขอขอบคุณ!
user70585

ยังมีพื้นที่ที่ไม่จำเป็นใน(if (= t 1)
ศูนย์รวมของความไม่รู้ที่

อ๊ะดีจับใจ👍
user70585



1

เยลลี่ , 8 7 ไบต์

‘b³Ḍ$⁴¡

ลองออนไลน์!

btb+1 1

คำอธิบาย

‘b³Ḍ$⁴¡ | Main link: first argument b, second argument t
‘       | b + 1
    $⁴¡ | Repeat the following t times
 b³     | Convert to base b
   Ḍ    | Convert back from decimal to integer

คำอธิบายสำหรับพวกเราที่ไม่สามารถจำอะตอมได้อย่างรวดเร็ว?
MilkyWay90




1

brainfuck , 270 ไบต์

++<<++<,+++<-[----->-<]<,,[<-----[->++++++++++<]++>[-<+>],]<[>>>>>>[<<<[->>+<<]>>>>>]<<[[>+<-]>>[-[<++++++++++>-]>+>]<[<<]>>[-<<+>>>+<]>>[-[<-[>>+>>]>>[+[-<<+>>]>[-<]<[>]>++>>>]<<<<<-]+>[-<+<+>>]<<[->>+<<]>>>]<[-]<[[-<+>]<<]<]<[->>+<<]<-]>>>>[>>]<<[>-[-----<+>]<----.<<]

ลองออนไลน์!

0 การจัดทำดัชนี จำนวนการวนซ้ำจะมากที่สุด 255

คำอธิบาย

เทปวางออกดังนี้:

num_iterations 0 0 base digit0 0 digit1 0 digit2 ...

จริง ๆ แล้วแต่ละหลักจะถูกเก็บไว้เป็นตัวเลขนั้นบวกกับ 1 โดยที่ 0 สงวนไว้สำหรับ "ไม่มีตัวเลข" ในระหว่างการแปลงฐานตัวเลขที่กำลังทำงานอยู่จะถูกย้ายหนึ่งเซลล์ไปทางขวาและฐานจะถูกย้ายไปทางซ้ายของพื้นที่ทำงานปัจจุบัน

++<<++              Initialize initial value 11
<,+++<-[----->-<]   Get single digit as base and subtract 48 to get actual number
<,,[<-----[->++++++++++<]++>[-<+>],]   Read multiple digits as number of iterations
<                   Go to cell containing number of iterations

[                   For each iteration:
  >>>>>>              Go to tens digit cell
  [<<<[->>+<<]>>>>>]  Move base to just before most significant digit
  <<                  Return to most significant digit

  [                   For each digit in number starting at the left (right on tape):
    [>+<-]            Move digit one cell to right (to tell where current digit is later)
    >>[-[<++++++++++>-]>+>]  Multiply each other digit by 10 and move left
    <[<<]>>           Return to base
    [-<<+>>>+<]       Copy base to just before digit (again) and just before next digit to right (left on tape)
    >>[               For each digit at least as significant as this digit:

      -[<-[>>+>>]>>[+[-<<+>>]  Compute "digit" divmod base
      >[-<]<[>]>++    While computing this: add quotient to next digit; initialize digit to "1" (0) first if "0" (null)
      >>>]<<<<<-]     End of divmod routine

      +>[-<+<+>>]     Leave modulo as current digit and restore base
      <<[->>+<<]      Move base to next position
      >>>
    ]

    <[-]<             Delete (now useless) copy of base
    [[-<+>]<<]<       Move digits back to original cells
  ]                   Repeat entire routine for each digit

  <[->>+<<]           Move base to original position
  <-                  Decrement iteration count
]

>>>>[>>]<<[>-[-----<+>]<----.<<]  Output by adding 47 to each cell containing a digit









โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.