Code Golf:钻石图案

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

Golfscript - 50个字符

~@:3,[{[.3-~' '*\' '*'/'\.'\\'4$]2$*}%n*.-1%]*n*\;
Run Code Online (Sandbox Code Playgroud)

  • 高尔夫球手再次获胜,打哈欠 (9认同)

Ven*_*ero 8

Golfscript - 57个字符 50个字符

~\:b;\:a,{[.a-~" "*'/'@' '*.'\\'4$]b*}%n*.-1%](*n*

57个字符:

~:c;:b;:a,{:§;b{" "a§)-*."/"" "§2**@'\\'\}*]}%n*.-1%]c*n*


Dr.*_*ius 7

Mathematica - 纯功能

一种纯粹的功能方法

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)

用于一次生成所有测试用例