Oblicz 6 * 9 w różnych bazach

16

Wyprowadza następujący wynik (który jest wynikiem obliczenia 6 * 9 w zasadach od 2 do 36). Upewnij się, że litery są wielkie, a samo mnożenie jest wyprowadzane w każdym wierszu.

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

Najkrótszy kod wygrywa.

Konrad Borowski
źródło
1
@Howard: Naprawiono. Zastanawiałem się nad zmianą z 2 na 10, ale zapomniałem o tej edycji, naprawiając coś innego, więc przypadkowo zostawiłem to w niewłaściwy sposób.
Konrad Borowski
2
Calculate 6*9 in different basesZastanawiam się, dlaczego sformułowanie to brzmi tak, dlaczego, 6*9a nie po prostu 54? Być może pierwotnie zamierzone znaczenie było takie 6i 9powinno być interpretowane nie zawsze jako dziesiętne, ale w różnych podstawach? To uczyniłoby to zdanie bardziej logicznym, a problem bardziej interesujący (ale wtedy powinniśmy zacząć od podstawy 10 do 36)
leonbloy
2
@leonbloy: 6i 9są liczbami jednocyfrowymi. Oznaczają to samo w każdej bazie, w której te cyfry są ważne.
Ilmari Karonen
1
@IlmariKaronen: Zgadza się, ale 6 * 9 = 110110nie ma większego sensu ...
Dennis
3
Jest to odniesienie do serii Autostopowicz po Galaktyce autorstwa Douglasa Adamsa. W serii odpowiedzią na ostateczne pytanie o życie, wszechświat i wszystko jest „42”. Później okazało się, że ostatecznym pytaniem o życie, wszechświat i wszystko jest „Co otrzymujesz, gdy pomnożysz sześć przez dziewięć?”, Co działa w bazie 13. Uwaga: Douglas Adams powiedział, że to niezamierzone; „Nie piszę żartów w bazie 13” .
dr jimbob

Odpowiedzi:

1

05AB1E , 21 20 bajtów

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

Wypróbuj online!

Urna Magicznej Ośmiornicy
źródło
Zakładam, że nie konkuruje tylko dlatego, że język jest nowszy niż wyzwanie? Oznaczanie jako zaakceptowane, ponieważ pozwalają na to obecnie zasady.
Konrad Borowski
@xfix prawie haha
Magic Octopus Urn
7

GolfScript, 39 znaków

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

Wynik można zobaczyć tutaj .

Howard
źródło
7

Oktawa, 49

for i=2:36printf("6 * 9 = %s\n",dec2base(54,i))end

Sanjeev Murty
źródło
6

JavaScript, 57 55 bajtów

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

Można skrócić do 49 alert, ale nie chcę nikogo poddawać ...

Joachim Isaksson
źródło
3
Dane wyjściowe powinny być pisane wielkimi literami i (54)mogą być zastąpione przez 54.(do zapisu 54..toString).
Konrad Borowski
2
for(i=1;++i<37;)zapisuje również postać.
grc
Czy możesz zignorować 37? Spowoduje to błąd i zatrzymanie
l4m2
4

Rubin (47)

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

Wiem, że rozwiązanie GolfScript jest lepsze, ale hej, przynajmniej nie jest to ezoteryczne ...

przepisane
źródło
2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}oszczędza kilka bajtów. To wyjście z błędem, ale to jest 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
boothby
źródło
Znakomity. Dość zauważalne, że jestem całkowitym Pytobem noob w porównaniu :)
Joachim Isaksson
@JoachimIsaksson Dzięki ... Mam mnóstwo do nauczenia się.
stoisko
Możesz ogolić jeden znak, używając zamiast tego pętli while: b=2<podział linii> while b<37:print'6 * 9 =',B(54);b+=1(zakładając pojedynczy znak dla podziału linii * nix)
Bob
@ Bob Za każdym razem, gdy próbuję pętli while, jest to zbyt kosztowne. Potem zapominam spróbować następnym razem. ;) Dzięki!
stoisko
3

Python 2.7 ( 124 114)

EDYCJA: Wytnij trochę puchu dzięki komentarzowi @ boothby poniżej

Myślę, że Python ma się dobrze, biorąc pod uwagę, że nie ma wbudowanego (o którym wiem) do konwersji podstawowej, więc należy to zrobić w kodzie;

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')
Joachim Isaksson
źródło
Muszę ciągle o tym przypominać: print'\n'.join(...for x in y)jest raczej dłuższy niż for x in y:print....
stoisko
@boothby Dzięki, zaktualizowano o twoją sugestię :)
Joachim Isaksson
2

Perl 6 , 36 bajtów

say '6 * 9 = ',54.base($_) for 2..36
Sean
źródło
1

Mathematica 40

Niekwestionowane (użyte małe litery):

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

base output

DavidC
źródło
1

Julia, 61 lat

dla b = 2: 36; @printf ("6 * 9 =% s \ n", wielkie litery (podstawa (b, 54))); koniec

Całkiem bezbolesne, oprócz pamiętania o użyciu makra @printf kontra printf.

Baza importowa; nie są potrzebne ...

Joe
źródło
for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endjest również dobra ...
kormullion
1

Perl

Musiałem użyć modułu Math :: BaseCnv

35 znaków bez useinstrukcji:

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

54 znaki z useinstrukcją:

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

Nie wiem, jak byś to ocenił, więc oba są uwzględnione.

Wykorzystano strukturę BLOKUJ LISTĘ mapy. Lista jest zakresem od 2 do 36, o które wnioskowano. Mięso jest w cnv($NUMBER, $BASE)funkcji, a mapa jest domyślną pętlą.

Joe
źródło
1
Policz useoświadczenie. Pierwszy nie działa w moim perlu.
stoisko
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]
śmigać
źródło
1

CoffeeScript 71

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

Połączyć

Eikes
źródło
1

C ( 166 151)

Pozbyłem się niepotrzebnych postaci i zmieniłem niektóre deklaracje. Zakłada, że ​​uruchamiasz program bez argumentów.

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("");}}
cardinaliti
źródło
1

Clojure, 75

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

OpenSauce
źródło
1

Python 3, 83 bajty

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))
Cormac
źródło
1
Możesz użyć '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))zamiast, *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'aby zapisać bajt.
Post Rock Garf Hunter
Prawdopodobnie powinieneś podać „Python 3 z Numpy”, ponieważ nie jest to standardowa biblioteka
FlipTack
1

Dart, 75 bajtów

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

Dart jest trochę gadatliwy, jeśli chodzi o stdlib, ale hej ... przynajmniej możesz to przeczytać: P

Dwayne Slater
źródło
0

Scala, 71

2 to 36 map(i=>println("6 * 9 = "+Integer.toString(54,i).toUpperCase))
gourlaysama
źródło
0

Common Lisp: 56 znaków

(do((b 2(1+ b)))((> b 36))(format t"6 * 9 = ~vr~%"b 54))
Svante
źródło
0

Sage, 48:

Wstyd Sage drukuje małymi literami ... Byłbym tylko jednym nad Howardem. Albo, jak sądzę, źle i związany z Davidem Carraherem.

for i in[2..36]:print'6 * 9 =',54.str(i).upper()
boothby
źródło
0

Dalej, 54

: f 54 37 2 do ." 6 * 9 = " dup i base ! . cr loop ; f
Darren Stone
źródło
0

/// , 133 bajty

/R/6 * 9 = //S/
R/R110110S2000S312S204S130S105S66S60S54S4AS46S42S3CS39S36S33S30S2GS2ES2CS2AS28S26S24S22S20S1QS1PS1OS1NS1MS1LS1KS1JS1I

Wypróbuj online!

Erik the Outgolfer
źródło
0

SpecBAS - 48 bajtów

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

SpecBAS jest naprawdę dość konkurencyjny dla zmiany :-)

Brian
źródło
0

8th , 65 62 bajtów

To jest kompletny program. Wyjdź po wykonaniu

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

Wyjaśnienie

( 
   "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
Dwór Chaosu
źródło