这是代码高尔夫。对于这个挑战,我将接受一个方法(您不需要完整的程序),但是方法签名确实计入字节数,并且我想查看完整的签名(不是lamdba)。该方法的输入是具有81个元素的整数数组。该方法的输出/返回值是一个字符串,该字符串将数组表示为ASCII数独板。
如果您使用的是深奥的语言或某种绝对没有方法的语言,则可以进行调整,但是如果该语言完全支持此功能,我希望看到实际上可以将某种东西插入“真正的”非高尔夫程序中,即使方法身体本身就是一种痛苦。该要求不是要阻止Jelly或05AB1E之类的语言,而是要使Java之类的语言更容易构建对该平台有意义的内容。
对于输入,整数值1-9应该具有明显的含义。应始终将0解释为空白单元格。您也可以将1-9范围以外的任何内容解释为空白单元格,但这不是必需的。从数组到拼图的位置从左上角开始,并从左到右填充每一行,然后再移动到下一行。
对于盒子,我希望在外部和每个3x3区域之间使用双线,在其他单元格之间使用单线。这些字符应使用线描字符绘制(如果您的I / O格式将字符串表示为字节序列而不是字符序列,则应以众所周知的编码(例如UTF-8或代码页347)表示它们。
对于这个挑战,我不是要您生成数独难题。这是功能的输入。我不是要你解决难题。我只是想让您产生一个字符串来“绘制”您所得到的(尽可能少的字节)。
输入示例:
数组的值:
{ 8, 5, 0, 0, 0, 2, 4, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 2, 3, 0, 5, 0, 0, 0, 9, 0, 0 ,0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 7, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 4, 0}
这些值可以使用您的语言所固有的任何机制:int [],ArrayList,序列,元组,数字串等,只要您在每个单元格的输入中都有一个值即可(没有映射仅将填充的单元格映射到位置)。请记住,提供了输入...这不是字节数的一部分。但是输入可能代表任何数独难题,并且难题甚至可能没有有效的解决方案。您必须假设拼图是可打印的。例如,您将不会得到82个元素。
您还可以假定使用合理的固定宽度字体。
对应输出:
╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗ ║8│5│║││2║4││║ ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ ║7│2│║││║│││9║ ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ ║││4║││║││║ ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ ║││║1││7║││2║ ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ ║3││5║││║9││║ ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ ║│4│║││║││║ ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ ║││║│8│║│7│║ ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ ║│1│7║││║││║ ╟───┼───┼───╫───┼───┼───╫───┼───┼───╢ ║││║│3│6║│4│║ ╚═══╧═══╧═══牛皮═══╧═══╧═══牛皮═══╧═══╧═══╝