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.


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:



7

GolfScript, 39 znaków

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

Wynik można zobaczyć tutaj .



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ć ...


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


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

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

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


1

Mathematica 40

Niekwestionowane (użyte małe litery):

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

base output


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


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ą.


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]


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("");}}

1

Clojure, 75

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


1

Python 3, 83 bajty

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

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


0

Scala, 71

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

0

Common Lisp: 56 znaków

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

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



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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.