คำนวณ 6 * 9 ในฐานที่ต่างกัน


16

เอาท์พุทผลลัพธ์ต่อไปนี้ (ซึ่งเป็นผลมาจากการคำนวณ 6 * 9 ในฐานตั้งแต่ 2 ถึง 36) ตรวจสอบให้แน่ใจว่าตัวอักษรเป็นตัวพิมพ์ใหญ่และตัวคูณจะถูกส่งออกในทุกบรรทัด

6 * 9 = 110110
6 * 9 = 2000
6 * 9 = 312
6 * 9 = 204
6 * 9 = 130
6 * 9 = 105
6 * 9 = 66
6 * 9 = 60
6 * 9 = 54
6 * 9 = 4A
6 * 9 = 46
6 * 9 = 42
6 * 9 = 3C
6 * 9 = 39
6 * 9 = 36
6 * 9 = 33
6 * 9 = 30
6 * 9 = 2G
6 * 9 = 2E
6 * 9 = 2C
6 * 9 = 2A
6 * 9 = 28
6 * 9 = 26
6 * 9 = 24
6 * 9 = 22
6 * 9 = 20
6 * 9 = 1Q
6 * 9 = 1P
6 * 9 = 1O
6 * 9 = 1N
6 * 9 = 1M
6 * 9 = 1L
6 * 9 = 1K
6 * 9 = 1J
6 * 9 = 1I

รหัสที่สั้นที่สุดชนะ


1
@ วิธี: แก้ไข ฉันกำลังพิจารณาที่จะเปลี่ยน 2 ถึง 10 แต่ลืมเกี่ยวกับการแก้ไขนี้ในขณะที่แก้ไขอย่างอื่นในผลลัพธ์ดังนั้นฉันจึงปล่อยให้มันผิดไปในทางที่ผิด
Konrad Borowski

2
Calculate 6*9 in different basesฉันสงสัยว่าทำไมคำพูดจึงเป็นคำพูดทำไม6*9และไม่ง่าย54? บางทีอาจจะเป็นความหมายที่ตั้งใจไว้ แต่เดิมเป็นที่6และ9ควรจะตีความไม่เคยเป็นทศนิยม แต่ในฐานที่แตกต่างกัน? ที่จะทำให้คำสั่งตรรกะมากขึ้นและปัญหาที่เกิดขึ้นน่าสนใจมากขึ้น ( แต่แล้วเราควรจะเริ่มต้นจากฐาน 10-36)
leonbloy

2
@leonbloy: 6และ9เป็นตัวเลขหลักเดียว มันหมายถึงเหมือนกันในทุก ๆ ฐานที่ตัวเลขเหล่านั้นถูกต้อง
Ilmari Karonen

1
@IlmariKaronen: ถูกต้อง แต่6 * 9 = 110110ไม่ได้ทำให้ความรู้สึกมาก ...
เดนนิส

3
นี่คือการอ้างอิงถึงคู่มือโบกรถของชุดกาแล็กซี่ของดักลาสอดัมส์ ในซีรีส์คำตอบของคำถามสุดท้ายแห่งชีวิตจักรวาลและทุกสิ่งคือ "42" ต่อมามันเปิดเผยว่าคำถามสุดท้ายของชีวิตจักรวาลและทุกสิ่งคือ "คุณจะได้อะไรเมื่อคุณคูณหกสิบเก้า?" ซึ่งทำงานในฐาน -13 หมายเหตุ: ดักลาสอดัมส์บอกว่านี่เป็นเรื่องไม่ได้ตั้งใจ; "ผมไม่ได้เขียนเรื่องตลกในฐาน-13"
dr jimbob

คำตอบ:


1

05AB1E , 21 20 ไบต์

36G54N>B"6 * 9 = ÿ",

ลองออนไลน์!


ฉันคิดว่ามันไม่ใช่การแข่งขันเพียงเพราะภาษาใหม่กว่าความท้าทายหรือไม่? ทำเครื่องหมายว่ายอมรับแล้วตามกฎที่อนุญาตในขณะนี้
Konrad Borowski

@xfix สวยมากฮ่าฮ่า
Magic Octopus Urn



6

Javascript, 57 55 ไบต์

for(i=2;++i<37;)console.log('6 * 9 = '+54..toString(i))

อาจจะสั้นลงถึง 49 ด้วยalertแต่ฉันไม่ต้องการส่งใครไปที่ ...


3
เอาต์พุตควรเป็นตัวพิมพ์ใหญ่และ(54)สามารถแทนที่ด้วย54.(เพื่อเขียน54..toString)
Konrad Borowski

2
for(i=1;++i<37;)ยังบันทึกอักขระ
grc

คุณสามารถละเว้น 37 หรือไม่? มันจะส่งผลให้เกิดข้อผิดพลาดและหยุด
l4m2

4

ทับทิม (47)

2.upto(36){|t|puts"9 * 6 = "+54.to_s(t).upcase}

ฉันรู้ว่า GolfScript เป็นทางออกที่ดี แต่อย่างน้อยนี่ไม่ใช่ความลับ ...


2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}บันทึกไม่กี่ไบต์ มันออกมาจากที่มีข้อผิดพลาด แต่ที่ ok: D
m-chrzan

4

Python, 89

B=lambda x:x*'.'and B(x/b)+chr(x%b+7*(x%b>9)+48)
b=2
while b<37:print'6 * 9 =',B(54);b+=1

สุกใส ที่เห็นได้ชัดมากที่ฉัน Noob หลามรวมในการเปรียบเทียบ :)
โจอาคิม Isaksson

@JoachimIsaksson ขอบคุณ ... ฉันมีภาระมากขึ้นในการเรียนรู้
บูธโดย

คุณสามารถโกนอักขระหนึ่งตัวโดยใช้การวนรอบสักครู่แทน: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(สมมติว่าอักขระตัวเดียวสำหรับ * nix linebreak)
Bob

@Bob เมื่อใดก็ตามที่ฉันลองลูปสักครู่มันก็แพงเกินไป จากนั้นฉันลืมที่จะลองในครั้งต่อไป ;) ขอบคุณ!
บูธโดย

3

Python 2.7 ( 124 114)

แก้ไข: ตัดขนปุยขอบคุณความคิดเห็น @ boothby ด้านล่าง

ฉันคิดว่า Python ทำงานได้ดีเนื่องจากไม่มีตัวแปลง (ที่ฉันรู้) เพื่อทำการแปลงพื้นฐานดังนั้นจึงต้องทำในโค้ด

for b in range(2,37):print'6 * 9 = '+''.join(chr((54/b**y%b>9)*7+48+54/b**y%b)for y in range(4,-1,-1)).lstrip('0')

ฉันต้องเตือนตัวเองในเรื่องนี้อย่างต่อเนื่อง: ค่อนข้างนานกว่าprint'\n'.join(...for x in y) for x in y:print...
บูธโดย

@boothby ขอบคุณการปรับปรุงด้วยข้อเสนอแนะของคุณ :)
โจอาคิม Isaksson


1

Mathematica 40

ไม่ได้อยู่ในการช่วงชิง (ใช้อักษรตัวพิมพ์เล็ก):

Print["6*9 = ",54~BaseForm~#]&/@2~Range~36

base output


1

จูเลียอายุ 61 ปี

สำหรับ b = 2: 36; @printf ("6 * 9 =% s \ n", ตัวพิมพ์ใหญ่ (ฐาน (b, 54))); end

ค่อนข้างเจ็บปวดนอกจากจะจำได้ว่าใช้แมโคร @ printf กับ printf

ฐานนำเข้า; ไม่ต้องการ ...


for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endก็ดี ...
cormullion

1

Perl

จำเป็นต้องใช้โมดูล Math :: BaseCnv

35 ตัวอักษรที่ไม่มีuseข้อความ:

map{say"6 * 9 = ",cnv(54,$_)}2..36

54 ตัวอักษรที่มีuseคำสั่ง:

use Math::BaseCnv;
map{say"6 * 9 = ",cnv(54,$_)}2..36

ไม่แน่ใจว่าคุณจะให้คะแนนสิ่งนี้อย่างไรดังนั้นจึงรวมอยู่ด้วย

โครงสร้างแผนผัง BLOCK LIST ถูกใช้ รายการคือช่วง 2 ถึง 36 ที่ถูกร้องขอ เนื้อสัตว์อยู่ในcnv($NUMBER, $BASE)ฟังก์ชั่นและแผนที่เป็นวงโดยนัย


1
นับuseคำสั่ง คนแรกไม่ทำงานใน perl ของฉัน
บูธโดย

1

เจ - 78 70

'6 * 9 = ',"1>;/(a.#~48 10 7 26 165#0 1 0 1 0){~<&.>(2+i.35)#.inv&.>54

Haskell - 137

let s=['0'..'9']++['A'..'Z'];t _(0,r)=[s!!r];t b(q,r)=(t b$b q)++[s!!r]in mapM_(putStrLn.("6 * 9 = "++).(\b->t b$b 54).flip divMod)[2..36]


1

C ( 166 151)

กำจัดอักขระที่ไม่จำเป็นออกไปและเปลี่ยนการประกาศบางอย่าง สมมติว่าคุณกำลังรันโปรแกรมโดยไม่มีข้อโต้แย้ง

p[7],i,l,v,r;main(b){for(r=2;r<37;r++){b++;printf("6 * 9 = ");v=54;while(v>0)l=v%b,p[i++]=l>9?l+55:l+48,v/=b;while(i^0)printf("%c",p[--i]);puts("");}}


1

Python 3, 83 ไบต์

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))

1
คุณสามารถใช้'\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))แทน*['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'การบันทึกไบต์
โพสต์ Rock Garf Hunter

คุณควรระบุ "Python 3 กับ Numpy" เนื่องจากไม่ใช่ไลบรารีมาตรฐาน
FlipTack

1

โผ 75 ไบต์

for(int x=2;x<37;x++)print("6 * 9 = ${54.toRadixString(x).toUpperCase()}");

Dart ค่อนข้างละเอียดเมื่อพูดถึง stdlib แต่เดี๋ยวก่อน ... อย่างน้อยคุณก็สามารถอ่านได้: P




0

ปราชญ์, 48:

Shame Sage พิมพ์เป็นตัวพิมพ์เล็ก ... ฉันจะเป็นหนึ่งเดียวกับโฮเวิร์ด หรือฉันเดาผิดและผูกติดอยู่กับ David Carraher

for i in[2..36]:print'6 * 9 =',54.str(i).upper()



0

SpecBAS - 48 ไบต์

1 FOR i=2 TO 36: ?"6 * 9 = ";BASE$(54,i): NEXT i

SpecBAS จริง ๆ แล้วค่อนข้างแข่งขันสำหรับการเปลี่ยนแปลง :-)


0

8th , 65 62 62 bytes

นี่เป็นโปรแกรมที่สมบูรณ์ ออกหลังจากการดำเนินการ

( "6 * 9 = " . #54 swap base drop >s s:uc . cr ) 2 36 loop bye 

คำอธิบาย

( 
   "6 * 9 = " .   \ Print the first part of the formula
    #54 swap base \ Enter into the base provided by loop index and                
                  \ convert 54 (which is always expressed in base 10)
    drop          \ Get rid of previous base
    >s s:uc       \ Convert number into an upper case string
    . cr          \ Print result and newline
) 2 36 loop       \ Provide base from 2 to 36
bye               \ Quit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.