Hitung 6 * 9 di pangkalan yang berbeda


16

Keluarkan hasil berikut (yang merupakan hasil dari menghitung 6 * 9 dalam basis dari 2 hingga 36). Pastikan huruf besar, dan perkalian itu sendiri dihasilkan pada setiap baris.

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

Kode terpendek menang.


1
@ Howard: Tetap. Saya sedang mempertimbangkan mengubah 2 menjadi 10, tetapi lupa tentang pengeditan ini ketika memperbaiki sesuatu yang lain di hasilnya, jadi saya tidak sengaja meninggalkannya dengan cara yang salah.
Konrad Borowski

2
Calculate 6*9 in different bases Saya bertanya-tanya mengapa pernyataan itu diucapkan demikian, mengapa 6*9 dan tidak hanya 54? Mungkin makna yang dimaksudkan awalnya adalah bahwa 6dan 9harus ditafsirkan tidak selalu sebagai desimal tetapi dalam basis yang berbeda? Itu akan membuat pernyataan itu lebih logis, dan masalahnya lebih menarik (tapi kemudian kita harus mulai dari pangkalan 10 hingga 36)
leonbloy

2
@leonbloy: 6dan 9merupakan angka satu digit. Mereka berarti sama di setiap basis di mana angka-angka itu valid.
Ilmari Karonen

1
@IlmariKaronen: Benar, tapi 6 * 9 = 110110tidak masuk akal ...
Dennis

3
Ini adalah referensi ke Panduan Hitchhiker untuk seri Galaxy oleh Douglas Adams. Dalam seri ini, Jawaban atas Pertanyaan Akhir Kehidupan, Alam Semesta, dan Segalanya adalah "42". Kemudian, terungkap bahwa Pertanyaan Pokok Kehidupan, Semesta, dan Segalanya adalah "Apa yang Anda dapatkan ketika Anda mengalikan enam dengan sembilan?", Yang berhasil di base-13. Catatan: Douglas Adams mengatakan ini tidak disengaja; "Aku tidak menulis lelucon di base-13" .
dr jimbob

Jawaban:



7

GolfScript, 39 karakter

35,{2+'6 * 9 = '54@base{.9>7*+48+}%n+}/

Hasilnya bisa dilihat di sini .



6

Javascript, 57 55 byte

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

Bisa dipersingkat menjadi 49 dengan alert, tapi saya tidak ingin mengirim siapa pun ke sana ...


3
Keluaran harus huruf besar, dan (54)dapat diganti dengan 54.(untuk menulis 54..toString).
Konrad Borowski

2
for(i=1;++i<37;)juga menyimpan karakter.
grc

Bisakah kamu mengabaikan 37? Ini akan menghasilkan kesalahan dan berhenti
l4m2

4

Ruby (47)

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

Yah, saya tahu bahwa solusi GolfScript lebih baik, tapi hei, setidaknya ini bukan esoteris ...


2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}menghemat beberapa byte. Ini keluar dengan kesalahan, tapi itu 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

Cemerlang. Cukup jelas bahwa saya adalah total Python noob sebagai perbandingan :)
Joachim Isaksson

@ JoachimIsaksson Terima kasih ... Saya punya banyak hal untuk dipelajari.
Stanby

Anda dapat mengurangi satu karakter dengan menggunakan loop sementara sebagai gantinya: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(dengan asumsi satu karakter untuk * nix linebreak)
Bob

@ Bob Setiap kali saya mencoba loop sementara, itu terlalu mahal. Kemudian, saya lupa untuk mencoba waktu berikutnya. ;) Terima kasih!
stan

3

Python 2.7 ( 124 114)

EDIT: Potong sedikit bulu berkat komentar @ boothby di bawah ini

Saya pikir Python baik-baik saja mengingat tidak memiliki built-in (yang saya tahu) untuk melakukan konversi basis sehingga harus dilakukan dalam kode;

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')

Saya harus mengingatkan diri saya tentang hal ini secara terus-menerus: print'\n'.join(...for x in y)lebih lama daripada for x in y:print....
stan

@ brownby Terima kasih, diperbarui dengan saran Anda :)
Joachim Isaksson


1

Mathematica 40

Tidak dalam pertikaian (huruf kecil digunakan):

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

base output


1

Julia, 61

untuk b = 2: 36; @printf ("6 * 9 =% s \ n", huruf besar (base (b, 54))); akhir

Cukup tanpa rasa sakit, selain mengingat untuk menggunakan makro @ printf versus printf.

Basis Impor; tidak dibutuhkan ...


for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endjuga baik ...
cormullion

1

Perl

Harus menggunakan modul Math :: BaseCnv

35 karakter tanpa usepernyataan:

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

54 karakter dengan usepernyataan:

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

Tidak yakin bagaimana skor Anda, jadi keduanya disertakan.

Struktur peta BLOCK LIST digunakan. Daftar adalah rentang 2 hingga 36, ​​yang diminta. Daging dalam cnv($NUMBER, $BASE)fungsi, dan peta adalah lingkaran tersirat.


1
Hitung usepernyataannya. Yang pertama tidak bekerja di perl saya.
stan

1

J - 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

CoffeeScript 71

alert ("6 * 9 = "+59.toString(x).toUpperCase()for x in[2..36]).join "\n"

Tautan


1

C ( 166 151)

Singkirkan beberapa karakter yang tidak perlu dan ubah beberapa deklarasi. Berasumsi bahwa Anda menjalankan program tanpa argumen.

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

Clojure, 75

(for[i(range 2 37)](println"6 * 9 ="(.toUpperCase(Integer/toString 54 i))))


1

Python 3, 83 byte

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

1
Anda dapat menggunakan '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))alih-alih *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'menyimpan byte.
Post Rock Garf Hunter

Anda mungkin harus menentukan "Python 3 dengan Numpy" karena ini bukan perpustakaan standar
FlipTack

1

Dart, 75 byte

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

Dart sedikit verbose ketika datang ke stdlib, tapi hei ... setidaknya Anda bisa membacanya: P


0

Scala, 71

2 to 36 map(i=>println("6 * 9 = "+Integer.toString(54,i).toUpperCase))

0

Gangguan Umum: 56 karakter

(do((b 2(1+ b)))((> b 36))(format t"6 * 9 = ~vr~%"b 54))

0

Sage, 48:

Malu Sage mencetak dalam huruf kecil ... Aku hanya satu di atas Howard. Atau, saya kira, salah dan terikat dengan David Carraher.

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



0

SpecBAS - 48 byte

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

SpecBAS sebenarnya cukup kompetitif untuk perubahan :-)


0

8 , 65 62 byte

Ini adalah program yang lengkap. Keluar setelah eksekusi

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

Penjelasan

( 
   "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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.