入力: stdinからの、またはコマンドライン引数としての、80より小さい正数。
出力:正方形のチェス盤パターン、入力数のサイズ。暗いフィールドは文字「X」で、白いフィールドはスペースで表されます。左上のフィールドは「X」です。
完全なプログラムが必要です。
例:
入力:1
出力:
X
入力:8
出力:
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
入力: stdinからの、またはコマンドライン引数としての、80より小さい正数。
出力:正方形のチェス盤パターン、入力数のサイズ。暗いフィールドは文字「X」で、白いフィールドはスペースで表されます。左上のフィールドは「X」です。
完全なプログラムが必要です。
例:
入力:1
出力:
X
入力:8
出力:
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
回答:
注:Pythはあまりにも新しいため、受賞資格がありません。しかし、それは楽しいゴルフであり、私はそれを共有すると思いました。
VQ<*QX*d2N\XQ
使い方:
Q = eval(input())
VQ for N in range(Q):
< Q [:Q]
*Q (Q* )
X*d2N\X assign_at(" "*2, N, "X")
基本的に、これはX
生成"X "
または" X"
交互に使用して、その文字列を繰り返しQ
、最初のQ
文字を取得します。これは何Q
度も繰り返されます。
X
(割り当て)機能はどのように機能しますか " "
この場合、元の文字列、この場合は割り当て場所、N
この場合は置換文字を使用"X"
します。Pythの割り当てがモジュラーであるので、これは場所の空間置き換えN%2
有するX
ことである、そして戻り結果の文字列、"X "
第1、第3、等のライン上を、そして" X"
他のものに。
for$i(1..$_){say substr" X"x$_,$i%2,$_}
Perl 5.10以降、実行perl -nE 'code'
(n
コードサイズでカウント)
サンプル出力:
$ perl -nE'for$i(1..$_){say substr" X"x 40,$i%2,$_}' <<<5
X X X
X X
X X X
X X
X X X
$ perl -nE'for$i(1..$_){say substr" X"x 40,$i%2,$_}' <<<8
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
x
は、文字列の繰り返し演算子です。'a' x 3
収量'aaa'
。
x,i=input(),0
exec'print(x*"X ")[i:i+x];i^=1;'*x
(x=gets.to_i).times
3つの文字を保存します。なぜこのオールディーズに対する興味が突然新たになったのですか?
#include <iostream.h>
int main(int i,char*c[]=0)
{
char a=i,b=i>>8;i&32512?((i>>16&255)<a)?(cout<<b)?main((i^30720)+65536):0:(cout<<endl)?(((b=(i>>24)+1)<a)?main((i&2130706559)+((b&1)?16785408:16799744)):0):0:main((i>=2?atoi(1[c]):8)|22528);
}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
おかげceilingcat 4バイトのゴルフ用とにケビンCruijssen 3よりゴルフのために。
ゴルフされていないバージョン:
n -> { // void lambda taking an int as argument
for(int i = 0; i < n*n; ) // loop over the entire square
System.out.print(((i%n + i/n) % 2 < 1 ? "X" : " ") // print an 'X' or a space depending on which line&column we're on
+ (++i % n < 1 ? "\n" : "")); // print a newline at the end of a line
}
interface M{static void main(String[]a){int i=0,n=new Byte(a[0]);for(;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}}
ゴルフされていないバージョン:
interface M {
static void main(String[] a) {
int i = 0, // iterator variable for the loop
n = new Byte(a[0]); // take the argument and convert it to an int
for(; i < n*n; ) // loop over the entire square
System.out.print( ((i%n + i/n) % 2 < 1 ? "X" : " ") // print an 'X' or a space depending on which line&column we're on
+(++i % n < 1 ? "\n" : "") ); // print a newline at the end of a line
}
}
}
s+=
それらの括弧より2バイト短いです:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
。オンラインでお試しください。
"X ".charAt(i%n+i/n&1)
代わりに((i%n+i/n)%2<1?"X":" ")
ÆîSi'XY
7 6バイト我々は交換することができればX
とx
。
ÆîSixY
別の8バイトソリューション:
Æî"X "éY
匿名の暗黙の接頭辞関数。⎕IO←0
(ゼロベースのインデックス付け)が必要です。
'X '⊇⍨2|⍳+⍀⍳
⍳
ɩndices 0…n–1
+⍀
さらに、水平および垂直方向のテーブル:
⍳
ɩndices 0…n–1
2|
2で除算したときの除算余り
'X '⊇⍨
その行列を使用して、文字列にインデックスを付けます
def^(n:Int)=for(a<-1 to n)println(("x_"*n).substring(n%2+1,n+n%2+1))
または
def^(n:Int)=for(a<-1 to n)println(("x_"*n).substring(a%2+1).take(n))
for(j=n=readline()|0;j--;)console.log(' X'.repeat(n).substr(j%2,n))
i,j;main(n){for(scanf("%d",&n);i++<n;puts(""))for(j=0;j<n;)putchar(i+j++&1?88:32);}
1 INPUTN:FORI=1TON;FORJ=1TON:IFI+JAND1THENPRINT" ";:GOTO3
2 PRINT"X";
3 NEXT:PRINT"":NEXT
on...go to
コマンドを条件付きで使用することができます。ON-(I+JAND1)GOTO3:?"X";:
ゼロの場合、次のステートメントにフォールスルーします。この場合、(I + J AND 1) === 0
Xを出力します。これにより、行ごとにステートメントを追加してバイトを節約できます。
文字数は、関数の場合は40、完全なプログラムの場合は54です。
関数本体のみを提供するソリューションは次のとおりです。
("X "*n)sliding n take n foreach println
完全なプログラムを提供するソリューションは次のとおりです。
val n=readInt;("X "*n)sliding n take n foreach println
次のコマンドラインを使用して実行できます。
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
ここで、8は入力です。
("X "*n)sliding n take n map println
from sys import*
r=stdout.write
s=int(raw_input())
[[r((x+y+1)%2 and"x"or" ")for x in range(s)]and r("\n")for y in range(s)]
{$[1=x mod 2;x;x-1]cut(x*x)#"X "}
{(x;x-1-x mod 2)#"X "}
doesntの持つ4 Xの奇数行に入力8. - 22 ...ああ、いや、あなたと同じバグがある
xおよびy関数の入力を許可します。
奇数入力もサポートするようになりました。
0.65 emの行の高さを持つように出力をスタイルし、このthis█と█░を□■と■□に変更すると、実際の(正方形の)チェス盤のように見えます。
function gen_cb($x,$y)
{
$c=0;
$y*=2;
for($i=0;$i<$y;$i++){
for($j=0;$j<$x;$j++){
echo $c%2==0 ? "░█" : "█░";
}
echo "<br/>";
$c++;
}
}
gen_cb(7,7);
░█░█░█░█░█░█░█
█░█░█░█░█░█░█░
░█░█░█░█░█░█░█
█░█░█░█░█░█░█░
░█░█░█░█░█░█░█
█░█░█░█░█░█░█░
░█░█░█░█░█░█░█
GolfScriptの答えを移植しただけかもしれませんが、ここでは別のアプローチを示します。(とにかくCJamは勝つ資格がありません。)
l~,_f{f{+2%S'X?}N}
考え方は、f{f{...}}
トリックを使用して、スタック上のxおよびyインデックスで2Dグリッドを反復処理することです。xとyが与えられると、単純に黒と白を決定し、それを(x+y)%2
使用して文字X
とスペースを含む文字列を選択できます。
Jも行方不明でした。
([:u:32+56*=/~@$&1 0) 5
X X X
X X
X X X
X X
X X X
前、22文字:
row #
+のmod2パターンからの文字コードcolumn #
:
([:u:88-56*2&|@+/~@i.) 5
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
オンラインでお試しください!