以不同的底数计算6 * 9


16

输出以下结果(以2到36为基础计算6 * 9的结果)。确保字母是大写的,并且乘法本身会输出到每一行。

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
@霍华德:固定。我正在考虑将2更改为10,但是在修复结果中的其他内容时却忘了进行此编辑,因此我不小心将其错误地留了下来。
Konrad Borowski

2
Calculate 6*9 in different bases我不知道为什么措辞如此,为什么6*9而不是简单54?也许最初的意图是这样,6并且9不应该总是将其解释为十进制,而应使用不同的底数?这将使声明更合乎逻辑,问题也将变得更加有趣(但是我们应该从10到36)
leonbloy 2014年

2
@leonbloy:69是个位数。在这些数字有效的所有基数中,它们的含义相同。
Ilmari Karonen 2014年

1
@IlmariKaronen:正确,但是6 * 9 = 110110没有太多意义……
丹尼斯

3
这是对道格拉斯·亚当斯(Douglas Adams)的《银河系旅行者指南》系列的参考。在该系列中,对生命,宇宙和一切终极问题的答案是“ 42”。后来,它揭示了生命,宇宙和万物的终极问题是“将六乘以九会得到什么?”,该结果以13为底。注意:道格拉斯·亚当斯(Douglas Adams)说这是无意的。“我不以13为底数开玩笑”
jimbob博士2014年

Answers:



7

GolfScript,39个字符

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

结果可以在这里看到。




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

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

辉煌。相比之下,我完全是一个Python新手:)
Joachim Isaksson 2014年

@JoachimIsaksson谢谢...我还有很多东西要学习。

您可以改用while循环b=2删除一个字符:<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(假设单个字符为* nix换行符)
Bob

@Bob每当我尝试while循环时,它都太昂贵了。然后,我忘了下次尝试。;) 谢谢!
展位

3

Python 2.7(124114

编辑:减少一些绒毛感谢@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谢谢,并根据您的建议进行了更新:)
Joachim Isaksson


1

Mathematica 40

不在争用中(使用小写字母):

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

基本输出


1

朱莉娅61岁

for b = 2:36; @printf(“ 6 * 9 =%s \ n”,大写(base(b,54)));结束

除了记住要使用@printf宏还是使用printf宏之外,还很轻松。

进口基地;没有必要 ...


for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");end也很好...
cormullion 2014年

1

佩尔

必须使用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语句。第一个在我的perl中不起作用。

1

- 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

CoffeeScript 71

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

链接


1

C(166151

摆脱了一些不必要的字符,并更改了一些声明。假定您正在运行不带参数的程序。

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个字节

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'保存一个字节。
发布Rock Garf Hunter,2013年

您可能应该指定“ Python 3 Numpy”,因为它不是标准库
FlipTack


0

斯卡拉,71

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

0

普通Lisp:56个字符

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

0

贤者,48:

羞耻的贤者用小写字母打印...我只会成为霍华德的一员。或者,我猜是错的,并且与戴维·卡拉雷(David Carraher)并列。

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

8th65 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.