在回答关于十六进制到(原始)二进制转换的这个问题时,评论表明它可以用"5-10行C或任何其他语言"来解决.
我确信(某些)脚本语言可以实现,并希望看到如何.对于C,我们能否证明评论是真的吗?
注意:这并不意味着十六进制到ASCII二进制 - 特别是输出应该是对应于输入ASCII十六进制的原始八位字节流.此外,输入解析器应跳过/忽略空格.
编辑(Brian Campbell)为了保持一致性,我可以提出以下规则吗?如果您认为这些内容没有帮助,请随意编辑或删除这些内容,但我认为,由于已经讨论过某些案例应该如何运作,因此一些澄清会有所帮助.
[a-fA-F \t\r\n],将单个字节中的两个字符分开的空格,输入中的奇数个十六进制数字)是未定义的; 任何行为(除了主动损坏用户的计算机或其他东西)都是可接受的(抛出错误,停止输出,忽略坏字符,将单个字符视为一个字节的值,都可以)我已经用PHP为自己设计了这个解决方案,但我很好奇它是如何以不同的方式完成的 - 甚至更好.我最感兴趣的两种语言是PHP和Javascript,但我很想知道今天用其他主要语言(主要是C#,Java等)可以多快地完成这项工作.
额外信用
额外信用额度
*"果蝇在医学研究方面是一件好事.过去对果蝇进行了大量的研究,并取得了许多突破.未来,果蝇将继续研究,但是我们的方法可能会改变."*显然,这里的词是"果蝇",这对我们来说很容易找到.你的search'n'scrape脚本也可以确定吗?
源文:http://sampsonresume.com/labs/c.txt
答案格式
编写计算给定正数集的Frobenius数的最短程序.Frobenius数是最大数,不能写为集合中数字的正倍数之和.
例如:对于该组中的鸡McNugget的TM尺寸[6,9,20]弗罗贝尼乌斯数为43,因为没有无解的方程*6 + B*9 + C*20 = 43(用A,B ,c> = 0),43是具有此属性的最大值.
可以假设给定集合存在Frobenius数.如果不是这种情况(例如对于[2,4]),则不会出现特定的行为.
参考文献:
[编辑]我决定接受GolfScript版本.虽然MATHEMATICA版本可能被认为是"技术上正确的",但它显然会带来竞争的乐趣.也就是说,我也对其他解决方案印象深刻,特别是Ruby(对于通用语言来说非常简短).
鉴于以下总统名单可以在最小的计划中进行前十个字数:
输入文件
Washington
Washington
Adams
Jefferson
Jefferson
Madison
Madison
Monroe
Monroe
John Quincy Adams
Jackson
Jackson
Van Buren
Harrison
DIES
Tyler
Polk
Taylor
DIES
Fillmore
Pierce
Buchanan
Lincoln
Lincoln
DIES
Johnson
Grant
Grant
Hayes
Garfield
DIES
Arthur
Cleveland
Harrison
Cleveland
McKinley
McKinley
DIES
Teddy Roosevelt
Teddy Roosevelt
Taft
Wilson
Wilson
Harding
Coolidge
Hoover
FDR
FDR
FDR
FDR
Dies
Truman
Truman
Eisenhower
Eisenhower
Kennedy
DIES
Johnson
Johnson
Nixon
Nixon
ABDICATES
Ford
Carter
Reagan
Reagan
Bush
Clinton
Clinton
Bush
Bush
Obama
以 …
实现一种算法,将任意数量的排序列表合并为一个排序列表.目标是用您喜欢的任何语言创建最小的工作程序.
例如:
input: ((1, 4, 7), (2, 5, 8), (3, 6, 9))
output: (1, 2, 3, 4, 5, 6, 7, 8, 9)
input: ((1, 10), (), (2, 5, 6, 7))
output: (1, 2, 5, 6, 7, 10)
Run Code Online (Sandbox Code Playgroud)
注意:连接输入列表然后使用语言提供的排序功能的解决方案不符合高尔夫的精神,并且不会被接受:
sorted(sum(lists,[])) # cheating: out of bounds!
Run Code Online (Sandbox Code Playgroud)
除了其他任何东西,你的算法应该(但不一定)快得多!
清楚地说明语言,任何缺点和字符数.只在计数中包含有意义的字符,但可以随意为代码添加空格以用于艺术/可读性目的.
为了保持整洁,建议改进评论或在适当的时候编辑答案,而不是为每个"修订"创建新的答案.
编辑:如果我再次提交这个问题,我会扩展"无语言提供排序"规则为"不连接所有列表然后排序结果".连接然后排序的现有条目实际上非常有趣和紧凑,因此我不会回溯地引入它们中断的规则,而是可以自由地在新提交中使用更严格的规范.
这是我的(代码高尔夫)挑战:取两个字节数组并确定第二个数组是否是第一个数组的子字符串.如果是,则输出第一个数组中第二个数组内容出现的索引.如果在第一个数组中没有找到第二个数组,则输出-1.
示例输入:{63,101,245,215,0} {245,215}
预期产出:2
示例输入2:{24,55,74,3,1} {24,56,74}
预期输出2:-1
编辑:有人指出bool是多余的,所以你所要做的就是返回一个表示值索引的int,如果找不到则返回-1.
好的,这是一个相当复杂的代码高尔夫挑战:实施一个黑白棋(奥赛罗)游戏.
以尽可能少的字符执行此操作.
会话应该看起来像这样:
abcdefgh
1
2
3
4 wb
5 bw
6
7
8
b>d3
abcdefgh
1
2
3 b
4 bb
5 bw
6
7
8
Run Code Online (Sandbox Code Playgroud) 说明
PHP在其语法中有一些漏洞,偶尔在开发过程中,程序员会介入它们.这可能会导致很多挫折,因为这些语法漏洞似乎无缘无故地存在.例如,一个人不能轻易地创建一个数组并在同一行上访问该数组的任意元素(func1()[100]不是有效的PHP语法).此问题的解决方法是使用临时变量并将语句分成两行,但有时这会导致非常详细,笨重的代码.
挑战
我知道其中一些漏洞(我确信还有更多漏洞).甚至很难提出解决方案,更不用说代码高尔夫风格了.获胜者是所有四个语法孔中总字符数最少的人.
规则
$output = ...;,哪里...不包含任何;.eval允许)E_STRICT | E_ALL.语法孔
$output = func_return_array()[$key];- 访问函数返回数组的任意偏移量(string或integer)$output = new {$class_base.$class_suffix}(); - 用于创建新类的任意字符串连接$output = {$func_base.$func_suffix}(); - 任意字符串连接被称为函数$output = func_return_closure()(); - 调用从另一个函数返回的闭包(感谢下面的greg0ire帮助了解关键概念)
挑战:构建一个程序,找到所有子串并用颜色属性"标记"它们(用XML有效地突出显示它们).
规则:
<TAG#>theSubstring</TAG#>,其中#是该子字符串和相同子字符串唯一的正数.注意:以下示例中显示的标记顺序并不重要.OP仅用于清晰度.
输入示例:
LoremIpsumissimplydummytextoftheprintingandtypesettingindustry.LoremIpsumhasbeentheindustry'sstandarddummytexteversincethe1500s,whenanunknownprintertookagalleyoftypeandscrambledittomakeatypespecimenbook.
Run Code Online (Sandbox Code Playgroud)
部分正确的输出(OP在这个例子中可能没有完全完全替换)
<TAG1>LoremIpsum</TAG1>issimply<TAG2>dummytext</TAG2>of<TAG5>the</TAG5><TAG3>print</TAG3>ingand<TAG4>type</TAG4>setting<TAG6>industry</TAG6>.<TAG1>LoremIpsum</TAG1>hasbeen<TAG5>the</TAG5><TAG6>industry</TAG6>'sstandard<TAG2>dummytext</TAG2>eversince<TAG5>the</TAG5>1500s,whenanunknown<TAG3>print</TAG3>ertookagalleyof<TAG4>type</TAG4>andscrambledittomakea<TAG4>type</TAG4>specimenbook.
Run Code Online (Sandbox Code Playgroud)
您的代码应该能够处理边缘情况,例如:
示例输入2:
hello!TAG!</hello.TAG.</
Run Code Online (Sandbox Code Playgroud)
示例输出2:
<TAG1>hello</TAG1>!<TAG2>TAG</TAG2>!<TAG3></</TAG3><TAG1>hello</TAG1>.<TAG2>TAG</TAG2>.<TAG3></</TAG3>
Run Code Online (Sandbox Code Playgroud)
获胜者,冠军:
轻微澄清:
我是Ruby的新手,我正在研究一些katas,我坚持这个愚蠢的问题.我需要将1个文件的内容复制到1行代码中的新文件中
第一次尝试:
File.open(out, 'w').write(File.open(in).read)
Run Code Online (Sandbox Code Playgroud)
很好,但是我需要关闭文件:
File.open(out, 'w') { |outf| outf.write(File.open(in).read) }
Run Code Online (Sandbox Code Playgroud)
然后关闭阅读:
File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } }
Run Code Online (Sandbox Code Playgroud)
这是我想出来的,但它看起来不像我的一行代码:(
想法?
问候,