Print a regular grid pattern with diamond-like base elements. Use the \ (backslash) and the / (slash) characters to print the borders and the * (asterisk) to print the inner part of the diamonds. Use . (dots) to fill the rest of the space.
Input
You are given t - the number of test cases and for each of the test cases three positive integers: r - the number of rows, c - the number of columns in the grid and s - the size of each diamond.
Output
For each of the test cases output the requested pattern (please have a look at the example). Use one line break in between successive patterns.
Example
Input: 3 3 1 2 4 4 1 2 5 2 Output: ./\. /**\ \**/ .\/. ./\. /**\ \**/ .\/. ./\. /**\ \**/ .\/. /\/\/\/\ \/\/\/\/ /\/\/\/\ \/\/\/\/ /\/\/\/\ \/\/\/\/ /\/\/\/\ \/\/\/\/ ./\../\../\../\../\. /**\/**\/**\/**\/**\ \**/\**/\**/\**/\**/ .\/..\/..\/..\/..\/. ./\../\../\../\../\. /**\/**\/**\/**\/**\ \**/\**/\**/\**/\**/ .\/..\/..\/..\/..\/.题意:给出输出菱形的行数及列数,及size,输出上面所示的图形
思路:关键就是判断在菱形内,可以使用在四条直线的上面或者下面来判断
代码如下:
<?php
$debug = false;
$file = STDIN;
if ($debug)
{
$file = fopen("./spoj.txt", "r");
}
$t = trim(fgets($file));
while ($t--)
{
$line = trim(fgets($file));
$data = explode(' ', $line);
$r = intval($data[0]);
$c = intval($data[1]);
$s = intval($data[2]);
$tmp = 2 * $s;
$mod1 = $s - 1;
$mod2 = $s;
$mod = 2 * $s;
$row = $r * $tmp;
$col = $c * $tmp;
for ($i = 0; $i < $row; $i++)
{
for ($j = 0; $j < $col; $j++)
{
if ($mod1 == ($i + $j) % $tmp) echo '/';
else if ($mod2 == abs($i - $j) % $tmp) echo '\\';
else if (inner($i, $j, $s)) echo '*';
else echo '.';
}
echo PHP_EOL;
}
if (0 != $t) echo PHP_EOL;
}
if ($debug) fclose($file);
function inner($x, $y, $s)
{
$tmp = 2 * $s;
while ($x > $tmp) $x -= $tmp;
while ($y > $tmp) $y -= $tmp;
if ($x + $y - $s + 1 <= 0)
{
return false;
}
if ($y - $x - $s >= 0)
{
return false;
}
if ($y + $x - 3 * $s + 1>= 0)
{
return false;
}
if ($y - $x + $s <= 0)
{
return false;
}
return true;
}