为了纪念Stack Overflow的公开发布,导致堆栈溢出的最短代码是什么?任何语言欢迎.
ETA:只是要明确这个问题,因为我偶尔会看到一个Scheme用户:尾调用"递归"实际上是迭代,任何可以通过合适的编译器相对简单地转换为迭代解决方案的解决方案都不会算一算 :-P
ETA2:我现在选择了"最佳答案"; 看这篇文章的理由.感谢所有贡献的人!:-)
构建给定文本中最常用单词的ASCII图表.
规则:
a-z
和A-Z
(字母字符)作为单词的一部分.She
== she
为了我们的目的).the, and, of, to, a, i, it, in, or, is
澄清:考虑don't
:这将被视为在范围2不同"单词" a-z
和A-Z
:(don
和t
).
可选(现在正式更改规范为时已晚)您可以选择删除所有单字母"单词"(这可能会缩短忽略列表).
解析给定的text
(读取通过命令行参数指定的文件或管道输入;假设us-ascii
)并构建word frequency chart
具有以下特征的a:
width
表示单词的出现次数(频率)(按比例).附加一个空格并打印单词.bar
+ [space]
+ word
+ [space]
应始终<= 80
字符(确保考虑可能不同的条形和字长:例如:第二个最常见的单词可能要长得多)第一个虽然频率差别不大).在这些约束条件下最大化条宽,并适当缩放条(根据它们所代表的频率).一个例子:
这个例子的文本可以在这里找到(爱丽丝梦游仙境,刘易斯卡罗尔).
此特定文本将产生以下图表:
_________________________________________________________________________ |_________________________________________________________________________| she |_______________________________________________________________| …
按字符计数的最短代码输入板的2D表示,并根据输入输出"true"或"false" .
该板由4种类型的瓷砖制成:
# - A solid wall
x - The target the laser has to hit
/ or \ - Mirrors pointing to a direction (depends on laser direction)
v, ^, > or < - The laser pointing to a direction (down, up, right and left respectively)
Run Code Online (Sandbox Code Playgroud)
只有一个激光器,只有一个目标.墙必须形成任何大小的实心矩形,激光和目标放在里面."房间"内的墙壁是可能的.
激光射击并从其原点移动到它指向的方向.如果激光射到墙上,它就会停止.如果激光射到镜子上,它会反射到镜子指向的方向90度.镜子是双面的,这意味着两面都是"反光的"并且可以以两种方式反射光线.如果激光射击激光(^v><
)本身,则将其视为墙壁(激光束会破坏投影仪,因此它永远不会击中目标).
Input: ########## # / \ # # # # \ x# # > / # ########## Output: true Input: ########## # …
由字符最短代码计数显示半径的圆的表示R
使用*
字符,接着π的近似值.
输入是一个数字,R
.
由于大多数计算机似乎具有几乎2:1的比率,因此您应该只输出y
奇数的行.这意味着当R
奇数时你应该打印R-1
线条.有一个新的测试用例R=13
需要澄清.
例如.
Input
5
Output Correct Incorrect
3 ******* 4 *******
1 ********* 2 *********
-1 ********* 0 ***********
-3 ******* -2 *********
2.56 -4 *******
3.44
Run Code Online (Sandbox Code Playgroud)
编辑:由于奇数值引起的广泛混淆R
,任何通过下面给出的4个测试用例的解决方案都将被接受
π的近似值是将*
字符数除以两倍得到的R²
.
近似值应至少为6位有效数字.
前导或尾随零是允许的,因此,例如任何的3
,3.000000
,003
被接受为输入2
和4
.
代码计数包括输入/输出(即完整程序).
Input
2
Output
***
***
3.0
Input
4
Output
***** …
Run Code Online (Sandbox Code Playgroud) 按字符计数的最短代码从给定长度的输入音符开始输出钢琴键盘的一部分.
输入将由一个音符([ACDFG]#|[A-G]
)组成,用于开始打印键盘,一个正数表示要打印的键的长度,包括第一个音符.
第一个键应该完整打印 - 如果它有一个左锐键,它将被剪切,相同的开始键是锋利的,左键也将被剪切.
不计算夏普键,只计算白键.
Input
C 14
Output
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### …
Run Code Online (Sandbox Code Playgroud) 我在高中时听到的一个小谜题是这样的......
目标是试图找出转换功能,然后能够自己可靠地监督这个难题.
任何步骤的转换功能都是
对于我曾经考虑过的所有数字,这会收敛到4.由于"四"也有四个字母,所以这里会有一个无限循环; 相反,它仅仅被称为魔术以结束序列.
您的挑战是创建一段代码,该代码将从用户读取数字,然后打印显示重复应用的转换函数的行,直到达到"四是魔术".
特别:
a is b.
其中a和b是转换中数字的数字形式.4 is magic.
.例子:
> 4
4 is magic.
> 12
12 is 6.
6 is 3.
3 is 5.
5 is 4.
4 is magic.
> 42
42 is 8.
8 is 5.
5 is 4.
4 is magic.
> 0 …
Run Code Online (Sandbox Code Playgroud) 灵感来自http://xkcd.com/710/这里是一个高尔夫代码.
挑战
给定大于0的正整数,打印出该数字的冰雹序列.
冰雹序列
有关更多详细信息,请参阅Wikipedia
用生成的数字重复此操作,直到达到1.(如果在1之后继续,它将进入无限循环1 -> 4 -> 2 -> 1...
)
有时代码是最好的解释方式,所以这里有一些来自维基百科
function collatz(n)
show n
if n > 1
if n is odd
call collatz(3n + 1)
else
call collatz(n / 2)
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但我正在增加额外的挑战.程序不能容易受到堆栈溢出的影响.所以它必须使用迭代或尾递归.
此外,如果它可以计算大数字并且语言尚未实现,则奖励积分.(或者如果使用固定长度的整数重新实现大数字支持)
测试用例
Number: 21
Results: 21 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
Number: 3
Results: 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 …
Run Code Online (Sandbox Code Playgroud) 考虑以下tetrominoes和空洞的比赛场地:
0123456789 I O Z T L S J [ ] [ ] # ## ## ### # ## # [ ] # ## ## # # ## # [ ] # ## ## [ ] # [ ] [==========]
比赛场地的尺寸是固定的.顶部的数字仅用于表示列号(也可参见输入).
1.您将获得一个特定的游戏区域(基于上述内容),该区域已经部分填充了四联蛋白(这可以在单独的文件中或通过标准输入提供).
样本输入:
[ ] [ ] [ ] [ ] [ # # #] [ ## ######] [==========]
2.您将获得一个字符串,该字符串描述(以空格分隔)哪个tetromino插入(和下拉)哪一列.Tetrominoes不需要旋转.输入可以从stdin读取.
样本输入:
T2 Z6 I0 T7
Run Code Online (Sandbox Code Playgroud)
您可以假设输入是"格式良好的"(或者当它不是时会产生未定义的行为).
渲染结果字段("完整"行必须消失)并打印分数计数(每个丢弃的行占10个点).
基于上面的示例输入的示例输出:
[ ] [ ] [ ] [# …
这是挑战(我自己的发明,但如果以前出现在网络的其他地方,我不会感到惊讶).
编写一个函数,该函数采用单个参数,该参数是简单数学表达式的字符串表示形式,并将其作为浮点值进行计算."简单表达"可以包括以下任何一种:正十进制数或负十进制数,+,-,*,/,(,).表达式使用(正常)中缀表示法.操作员应按其出现的顺序进行评估,即不像在BODMAS中那样进行 评估,但当然应该正确观察括号.该函数应该为此表单的任何可能表达式返回正确的结果.但是,该函数不必处理格式错误的表达式(即语法错误的表达式).
表达的例子:
Run Code Online (Sandbox Code Playgroud)1 + 3 / -8 = -0.5 (No BODMAS) 2*3*4*5+99 = 219 4 * (9 - 4) / (2 * 6 - 2) + 8 = 10 1 + ((123 * 3 - 69) / 100) = 4 2.45/8.5*9.27+(5*0.0023) = 2.68...
我预计会有某种形式的"作弊"/狡猾,所以请让我预先反对它!通过作弊,我指的是eval
在动态语言(如JavaScript或PHP)中使用或等效函数,或者同时编译和执行代码.(我认为我的"没有BODMAS"的规格几乎可以保证这一点.)除此之外,没有任何限制.我在这里预计会有一些Regex解决方案,但不仅仅是这样,我们会感到很高兴.
现在,我主要对C#/ .NET解决方案感兴趣,但是任何其他语言都是完全可以接受的(特别是F#和Python用于功能/混合方法).我还没有决定我是否会接受最短或最巧妙的解决方案(至少对于语言而言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚才禁止的!
我现在在这里发布了我的C#解决方案(403个字符).更新: …
按字符数排序的最短代码,将输出Excel列字符串的数字等效值.
例如,A
列为1,B
为2,依此类推.一旦你点击Z
,下一列变为AA
,然后AB
依此类推.
A: 1
B: 2
AD: 30
ABC: 731
WTF: 16074
ROFL: 326676
Run Code Online (Sandbox Code Playgroud)
代码计数包括输入/输出(即完整程序).