Обчисліть 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
@Howard: виправлено. Я розглядав можливість змінити 2 на 10, але забув про це редагування, фіксуючи щось інше в результаті, тому випадково залишив його неправильним шляхом.
Конрад Боровський

2
Calculate 6*9 in different basesЦікаво, чому твердження формулюється таким чином, чому, 6*9а не просто 54? Можливо, спочатку передбачуване значення було те , що 6і 9повинно бути витлумачено не завжди десятковим , але в різних базах? Це зробить заяву більш логічною, а проблема цікавішою (але тоді ми повинні почати з бази 10 - 36)
leonbloy

2
@leonbloy: 6і 9є одноцифровими числами. Вони означають те саме в кожній базі, де ці цифри є дійсними.
Ільмарі Каронен

1
@IlmariKaronen: Правильно, але 6 * 9 = 110110не має великого сенсу ...
Dennis

3
Це посилання на Путівник автостопом до серії Галактика Дугласа Адамса. У серії "Відповідь на остаточне питання життя, Всесвіту та всього" - "42". Пізніше було виявлено, що Остаточне питання життя, Всесвіту та всього - це "Що ви отримуєте, коли множите шість на дев'ять?", Що працює в базі-13. Примітка: Дуглас Адамс сказав, що це було ненавмисно; "Я не пишу жартів в базі-13" .
dr jimbob

Відповіді:


1

05AB1E , 21 20 байт

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

Спробуйте в Інтернеті!


Я припускаю, що це неконкурентоспроможність лише тому, що мова новітня, ніж виклик? Позначення як прийняте, як норми на сьогодні це дозволяють.
Конрад Боровський

@xfix в значній мірі ха-ха
Чарівний восьминіг Урна



6

Javascript, 57 55 байт

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

Можна скоротити до 49 alert, але я не хочу нікого до цього подавати ...


3
Вихід повинен бути великим, і (54)його можна замінити 54.(написати 54..toString).
Конрад Боровський

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}економить кілька байт. Він виходить з помилкою, але це нормально: D .
m-chrzan

4

Пітона, 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

Блискуча. Досить помітно, що я загальний нобій Python порівняно :)
Йоахім Ісакссон

@JoachimIsaksson Спасибі ... У мене є ще багато чого, щоб навчитися.
кабінка

Ви можете поголити один символ, скориставшись циклом while: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(якщо припустити одиничний символ для * nix linebreak)
Боб

@Bob Кожен раз, коли я пробую цикл, це занадто дорого. Тоді я забуду спробувати наступного разу. ;) Спасибі!
кабінка

3

Пітон 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 Дякуємо, оновлено вашу пропозицію :)
Йоахім Ісакссон


1

Математика 40

Не суперечить (використовуються малі літери):

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

base output


1

Юлія, 61 рік

для b = 2: 36; @printf ("6 * 9 =% s \ n", верхній регістр (основа (b, 54))); кінець

Досить безболісно, ​​крім пам’яті використовувати макрос @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заяву. Перший не працює в моєму перл.
кабінка

1

J - 78 70

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

Хаскелл - 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'щоб зберегти байт.
Пост Рок-Гарф Мисливець

Напевно, ви повинні вказати "Python 3 з Numpy", оскільки це не стандартна бібліотека
FlipTack

1

Дарт, 75 байт

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

Дартс дещо багатослівний, коли мова йде про stdlib, але ей ... принаймні, ви можете його прочитати: P



0

Звичайний Лісп: 56 символів

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

0

Мудрець, 48:

Ганьба Мудрець друкує малі літери ... Я б тільки один над Говардом Або, мабуть, неправильно і пов’язано з Девідом Каррахером.

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

8-е , 65 62 байт

Це повна програма. Вихід після виконання

( "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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.