Farklı bazlarda 6 * 9 hesapla


16

Aşağıdaki sonucu çıkar (2'den 36'ya kadar 6 * 9 baz alınarak hesaplanır). Harflerin büyük harf olduğundan ve her satırda çarpımın kendisinin olduğundan emin olun.

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

En kısa kod kazanır.


1
@Howard: Düzeltildi. 2 ila 10 değiştirmeyi düşünüyordum, ancak sonuçta başka bir şeyi düzeltirken bu düzenlemeyi unuttum, bu yüzden yanlışlıkla yanlış şekilde bıraktım.
Konrad Borowski

2
Calculate 6*9 in different basesİfadenin neden bu şekilde ifade edildiğini merak ediyorum, neden 6*9sadece değil 54? Belki de başlangıçta amaçlanan anlam şuydu 6ve 9her zaman ondalık olarak değil, farklı bazlarda yorumlanmalıdır? Bu, ifadeyi daha mantıklı ve problemi daha ilginç hale getirecektir (ancak daha sonra 10'dan 36'ya kadar başlamalıyız)
Leonbloy

2
@leonbloy: 6ve 9tek haneli sayılardır. Bu rakamların geçerli olduğu her baz için aynı anlama gelir.
Ilmari Karonen

1
@IlmariKaronen: Doğru, ama 6 * 9 = 110110pek mantıklı değil ...
Dennis

3
Bu, Douglas Adams'ın Otostopçunun Galaksi dizisi rehberine bir atıftır. Dizide Yaşam, Evren ve Her Şey'in Nihai Sorusuna Cevap "42" dir. Daha sonra, Yaşam-Evren ve Her şeyin Nihai Sorusunun, taban-13'te işe yarayan “altı ile dokuz çarptığınızda ne elde edersiniz?” Olduğu ortaya çıktı. Not: Douglas Adams bunun kasıtsız olduğunu söyledi; "Taban-13'e şaka yazmıyorum" .
dr jimbob

Yanıtlar:



7

GolfScript, 39 karakter

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

Sonuç burada görülebilir .



6

Javascript, 57 55 bayt

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

İle 49'a kısaltılabilir alert, ancak kimseye bunu göndermek istemiyorum ...


3
Çıktı büyük harf olmalıdır ve (yazmak için ) (54)ile değiştirilebilir . 54.54..toString
Konrad Borowski

2
for(i=1;++i<37;)ayrıca bir karakter kaydeder.
grc

37'yi görmezden gelebilir misin? Bir hataya neden olur ve durur
l4m2

4

Yakut (47)

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

GolfScript çözümünün daha iyi olduğunu biliyorum, ama hey, en azından bu ezoterik değil ...


2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}birkaç bayt kaydeder. Bu bir hata ile çıkar, ama sorun değil: 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

Parlak. Karşılaştırmada toplam bir Python noob olduğumu oldukça fark ediyorum :)
Joachim Isaksson

@JoachimIsaksson Teşekkürler ... Öğrenecek daha çok şeyim var.
boothby

Bunun yerine while döngüsünü kullanarak bir karakteri tıraş edebilirsiniz: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(* nix linebreak için tek bir karakter varsayarak)
Bob

@Bob Bir while döngüsünü denediğimde çok pahalı. Sonra bir dahaki sefere denemeyi unutuyorum. ;) Teşekkürler!
boothby

3

Python 2.7 ( 124 114)

EDIT: @ boothby aşağıdaki yorum sayesinde biraz kabartmak

Bence Python bu temel kod yapmak için hiçbir yerleşik (biliyorum) yerleşik olduğunu düşünüyor Tamam yapıyor, bu yüzden kod yapılması gerekiyor;

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

Kendime bunu sürekli olarak hatırlatmak zorundayım: print'\n'.join(...for x in y)daha uzun for x in y:print....
boothby

@boothby Teşekkürler, önerinizle güncellendi :)
Joachim Isaksson


1

Mathematica 40

Çekişmede değil (kullanılan küçük harfler):

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

temel çıkış


1

Julia, 61

b = 2: 36; @printf ("6 * 9 =% s \ n", büyük harf (taban (b, 54))); son

@Printf ve printf yerine makro kullanmayı hatırlamak dışında oldukça acısız.

İthalat Üssü; gerekli değil ...


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

1

Perl

Math :: BaseCnv modülünü kullanmak zorunda kaldım

useAçıklama olmadan 35 karakter :

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

Şu useifadeyle 54 karakter :

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

Bunu nasıl puanlayacağınızdan emin değilsiniz, bu yüzden her ikisi de dahil edilir.

Harita BLOK LİSTESİ yapısı kullanıldı. Liste istenen 2 ila 36 aralığıdır. Et işlevdedir cnv($NUMBER, $BASE)ve harita zımni bir döngüdür.


1
İfadeyi sayın use. İlki benim perlimde çalışmıyor.
boothby

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"

bağlantı


1

C ( 166151 )

Gereksiz karakterlerden kurtuldum ve bazı bildirimleri değiştirdik. Programı argüman olmadan çalıştırdığınızı varsayar.

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 bayt

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

1
Bayt kaydetmek '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))yerine kullanabilirsiniz *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'.
Post Rock Garf Hunter

Muhtemelen standart bir kütüphane olmadığı için "Python 3 ile Numpy" seçeneğini belirtmelisiniz
FlipTack

1

Dart, 75 bayt

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

Dart, stdlib söz konusu olduğunda biraz ayrıntılı, ama hey ... en azından okuyabilirsiniz: P


0

Scala, 71

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

0

Ortak Lisp: 56 karakter

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

0

Adaçayı, 48:

Utanç Adaçayı küçük harfle yazdırır ... Howard'ın üstünde sadece bir tane olurdum. Ya da sanırım yanlış ve David Carraher ile bağlı.

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



0

SpecBAS - 48 bayt

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

SpecBAS aslında bir değişiklik için oldukça rekabetçi :-)


0

8 , 65 62 bayt

Bu tam bir program. Yürütmeden sonra çık

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

açıklama

( 
   "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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.