まとめから
<2次元配列>
(1) 定義
arr=[];
(上のソース間詰まってますがこんなイメージ)
arr=[ ];
(2) 追加
arr.push("abcdefg");
arr.push("hijklmn");
(3) 列表示
print(arr[0]);
(4) x,y取得
print(arr[y][x]);
(5) 変更(列を文字列にした場合 スライス利用)
5,1を"z"にする
att[1]=att[1].slice(0,5)+"z"+att[1].slice(5+1)
(6) 変更(1つずつ設定してある場合)
arr=[]
arr.push(["a","b","c","d","e","f","g"]);
arr.push(["h","i","j","k","l","m","n"]);
//5,1を"z"にする
arr[1][5]="z"<その他>
(1) キャラクターコード65の文字(A)
String.fromCharCode(65)
(2) 文字列の繰り返し("1111111111")
"1".repeat(10)
(3) for(i=0;i<5;i++)などにカンマ区切りで中身を入れられる謎技(カンマ演算子)がある
for (total=0, i=1; i<=10; total+=i, i++);
print(i, total);
print(i, total);
実行後
11 55
(変数が残ってしまい他の言語と違ったりするので注意が必要)
(以下はこの後のプログラムには関係なし)
(4) 2進数の文字列を10進数に変換
print(parseInt("1111", 2));
(5) 文字列を数値化するときに+でもできる
a = +"5";
a = +readline();
(6) 少数の切り捨てに~~
print(~~5.5);
(7) split`,`でsplit(",")よりちょっと短くできる`はバッククォート
[a,b]="5,6".split`,`
print(+a * +b)
--------------------------
JavaScriptのコードコンテストの参加者のソースから学んでいます。
その問題で最後に解いた8問目(問題はランダムで参加時刻によって変わります)
正方形を左上から右、下、左、上と繰り返し、渦巻きに読み取る問題
4の時
java
asts
l !!c
tpir
だと
"javascriptlast!!"を答えます。
正方形のサイズは1から25まで
その時は1から4までハードコード orz
100点はその問題の参加者12名の中で2名いましたが、ソースの紹介はありませんでした。
ということで作ってみました。
アルゴリズムを思いつくまでに時間かかっています。
上下左右のしきい値にsy ey sx exを設定して、
しきい値で折れ曲がって、しきい値(境目となる値)を設定するプログラムです。
螺旋感が全くありません。
そこで各アルファベットを10個ずつ並べたものを逆に16x16の正方形に螺旋にはめてみたプログラムです。
そういえば同じようなもの「ウラムの螺旋」作ったはずと、
過去の記事をみていると半年ほど前に作っていました。
https://blog.goo.ne.jp/field_light/e/74338c28326d915c0f1a4246cc178cb6
ここの作成方法とは全く逆でした。(中央から作っていく)
半年前のBASICのソースさっぱりわからない。