お題9 正方形†
入力された数字の大きさの正方形を出力する
※適当に考えたネタなのでanarchy golfにあるかどうかは知らん
入力例1†
2
出力例1†
## ##
入力例2†
4
出力例2†
#### # # # # ####
提出†
C†
kurohuku 09/10/15 112bytes @narita
i,j;main(){scanf("%d",&i);for(i++;j<i*i-i;j++)putchar(j%i==i-1?'\n':j%i==0||j%i==i-2||j<i||j>i*(i-2)?'#':' ');}
改行してインデントすれば普通のコード.
siso 09/10/21 103bytes @narita
j=1;main(i,n){scanf("%d",&n);for(;++i<=n*n+n;j=i%(n+1))putchar(!j?10:j==1||j==n||i<=n||i>=n*n?35:32);}
条件式はまだまだ削れそう
#学校サボってまで何やってるんだろう・・・
kurohuku 09/10/23 96bytes @家 ubuntu-vm gcc4.2.4
main(i,j,n){scanf("%d",&n);for(i=n++;j;j-=!(i%=n))putchar(i++?i==2|i==n|j==n-1|j==1?35:32:10);}
ORがこれで良いことに気付いた.
Java†
lupin 09/10/15 254bytes @narita
class s{static{try{int a=System.in.read()-48;for(int y=0;y<a;y++){System.out.print('#');for(int x=1;x<a;x++){if(y==0||y==a-1)System.out.print("#");else{System.out.print(" ");if(x==a-2)System.out.print("#");}}System.out.println();}}catch(Exception e){}}}
出力文なんとかならんの?
static import すれば短くなると思いますよ.
言われるがままにstatic importにしてみた
lupin 09/10/19 244bytes @narita
import static java.lang.System.*;class s{static{try{int a=in.read()-48;for(int y=0;y<a;y++){out.print('#');for(int x=1;x<a;x++){if(y==0||y==a-1)out.print("#");else{out.print(" ");if(x==a-2)out.print("#");}}out.println();}}catch(Exception e){}}}
あとは三項演算子か?
for中のインクリメントを条件式で書けば各for文で1バイト削れるかもw
三項演算子を含め大幅に修正
lupin 09/10/21 195bytes @narita
class s{static{try{int a=System.in.read()-48,x,y=0;for(;y<a;y++){System.out.print('#');for(x=1;x<a;x++)System.out.print(y==0||y==a-1||x==a-1?'#':' ');System.out.println();}}catch(Exception e){}}}
出力文なんとk(ry
Sysout文辛いっすね・・・とりあえず||を|にすると2文字ほど削れるようです.
出力文がなんとかならないなら減らせばいいじゃない
lupin 09/10/23 159bytes @narita
class s{static{try{int a=System.in.read()-48,x,y=0;for(;y<a;y++)for(x=0;x<a;x++)System.out.print(x==a-1?"#\n":y==0|y==a-1|x==0?'#':' ');}catch(Exception e){}}}
三項演算子の中に三項演算子とか見づらすぎる
PHP†
cham 09/10/16 221bytes @narita & Firefox
<form method="post"><input name="n"><input type="submit"></form><?php $n=($_POST['n']);for($i=1;$i<=$n;$i++){for($j=1;$j<=$n;$j++){if($i==1||$i==$n)echo'#';else if($j==1||$j==$n)echo'#';else echo" ";}echo"<br>";}?>
どうしてWeb言語なんかでやろうと思ったんだ?
スペースを表す特殊文字がスペースとして出力されてるのを修正しようとしたらプゲラなことになった。
送信メソッドの変更とか色々で短く
cham 09/10/19 196bytes @narita & Firefox
<form method="GET"><input name="n"><input type="submit"></form><?php $n=($_GET['n']);for($i=1;$i<=$n;$i++){for($j=1;$j<=$n;$j++){echo($i==1||$i==$n?'#':$j==1||$j==$n?'#':" ");}echo"<br>";}?>
pachiki 09-10-22 139bytes @narita
<?php $a=floor(fgets(STDIN));for($i=0;$i<$a;$i++){for($j=0;$j<$a;$j++){if(0<$i&&$i<$a-1&&0<$j&&$j<$a-1)print' ';else print'#';}print"\n";}
Scala†
mayotako 09/10/20 66bytes
val n=readInt;print("#"*n+"\n"+("#"+" "*(n-2)+"#\n")*(n-2)+"#"*n)
ループやめました.インタプリタにコピペして実行すれば動きます.
よく見ると,murachueさんのperlと一緒だこれ!
文字に乗算できる言語だとほとんどこうなる気がする.
Perl†
murachue 09/10/16 66bytes(改行なし) @narita
$a=<>;print '#'x$a."\n".('#'.' 'x($a-2)."#\n")x($a-2).'#'x$a."\n";
100bytes切り楽勝ですね^^
perlおいしいです^^
murachue 09/10/16 62bytes(改行なし) @narita
$a=<>;$b='#'x$a."\n";print $b.('#'.' 'x($a-2)."#\n")x($a-2).$b
ちょっと短く。
ruby (matz lisp)†
masawaki 09/10/19 95bytes(最後の改行なし) @ossc03
i=gets.to_i;i.times{|j|i.times{|k|if k!=0&&k!=i-1&&j!=0&&j!=i-1
print' 'else print'#'end}
puts}
rubyはこんなもんか?
masawaki 09/10/19 94bytes(最後の改行なし) @ossc03
i=gets.hex;i.times{|j|i.times{|k|if k!=0&&k!=i-1&&j!=0&&j!=i-1
print' 'else print'#'end}
puts}
9まで入力可
わかったこととして、改行は;でもよし
mizyo 09/10/22 56bytes @MacOSX
n=getc-50;p="*#{' '*n}*\n";q=p.gsub(' ','*');$><<q+p*n+q
最後が気持ち悪いですね(by murachue
経験値足りないのがばれました。(by masawaki
CommonLisp†
kurohuku 09/10/19 73bytes @家 sbcl 1.0.29
(read)(format t"~@?~V@{#~1:*~V{ ~}#~%~1:*~}~0@*~@?""~V{#~}~%"* t(- * 2)t)
Perlのコードみたら頑張れる気がした.readの返り値を*で利用してるのでインタプリタオンリーかもしれない.
なでしこ†
kame 09/10/21 572bytes @なでしこ導入PC なでしこ ver.1.50066
数を尋ね、あに代入 番号を1からあまで繰り返す いに「#」を代入 もしあが3以上ならば もし番号が1ならば 番号2を1からあ-2まで繰り返す いに「#」を足していに代入 違ってもし番号があならば 番号2を1からあ-2まで繰り返す いに「#」を足していに代入 違えば 番号2を1からあ-2まで繰り返す いに「 」を足していに代入 もしあが2以上ならば いに「#」を足していに代入 いを表示 「おわり」と言う 終了
ALL日本語。ショートコーディング?何それ?おいしそう!
※ちなみに、改行・インデント消すと動作しません…orz





