Lir*_*una 22 language-agnostic code-golf rosetta-stone
按字符计算的最短代码根据输入输出钻石图案.
输入由3个正数组成,表示菱形的大小和网格的大小.
钻石由ASCII字符/
和\
空格组成.1号钻石是:
/\
\/
Run Code Online (Sandbox Code Playgroud)
网格的大小由钻石数量的宽度和高度组成.
Input:
1 6 2
Output:
/\/\/\/\/\/\
\/\/\/\/\/\/
/\/\/\/\/\/\
\/\/\/\/\/\/
Run Code Online (Sandbox Code Playgroud)
Input:
2 2 2
Output:
/\ /\
/ \/ \
\ /\ /
\/ \/
/\ /\
/ \/ \
\ /\ /
\/ \/
Run Code Online (Sandbox Code Playgroud)
Input
4 3 1
Output:
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/ \/ \/ \
\ /\ /\ /
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
Run Code Online (Sandbox Code Playgroud)
代码计数包括输入/输出(即完整程序).
Nab*_*abb 10
~@:3,[{[.3-~' '*\' '*'/'\.'\\'4$]2$*}%n*.-1%]*n*\;
Run Code Online (Sandbox Code Playgroud)
~\:b;\:a,{[.a-~" "*'/'@' '*.'\\'4$]b*}%n*.-1%](*n*
57个字符:
~:c;:b;:a,{:§;b{" "a§)-*."/"" "§2**@'\\'\}*]}%n*.-1%]c*n*
一种纯粹的功能方法
f[a_, b_, c_]:=Grid[Array[If[(s = FindInstance [Abs[p =(2((2k+1)a + #1)-1)]
== (2#2-1), k, Integers])!={},
{"\\", , "/"}[[Sign[p] /. s[[1]]]]] &, 2 a {c, b}]]
Run Code Online (Sandbox Code Playgroud)
请注意,Mathematica正在求解一个方程式,以找到钻石中直线的功能.这是k中的丢番图方程:
Abs[(2((2 * k + 1)a + x)-1)] == (2 * y -1) (only find solutions for Integer k)
Run Code Online (Sandbox Code Playgroud)
对于每个元素,然后,如果找到解,则根据等式的lhs的符号确定"\"或"/".(在{"\",,"/"} [[Sign [p]/.s [[1]]部分)
用法
f[2, 2, 2]
Run Code Online (Sandbox Code Playgroud)
要么
Grid[f[2, 2, 2], f[1, 6, 2], f[4, 3, 3]]
Run Code Online (Sandbox Code Playgroud)
用于一次生成所有测试用例