PaizaBINGO Ruby正攻法最短(多分)を書いた
乱択がBANされるという風のうわさを聞いてガチゴルフをしたのですが、結局乱択の人が商品をもらったらしいです
問題
##. .#. .##
みたいな形式の3*3ビンゴ表(#
-> true, .
-> false)のビンゴ数を出力
コード
自力
a=`tr '.# ' 01_`.to_i 2;p [7,56,448,73,146,292,273,84].count{a&_1==_1}
気づかなかったやつ
a=`tr '.# ' 01_`.to_i 2;p [7,56,448,73,146,292,273,84].count{a|_1==a}
解説
a=`tr '.#\n' 01_`.to_i 2
##. .#. .##
を
'110_010_011'.to_i(2)
他:
''
の中の改行は'\n'と同じ- バッククオートはshell呼び出し、
tr
は置換コマンド to_i(2)
の括弧は削れる時があるp [7,56,448,73,146,292,273,84].count{a|_1==a}
int count = 0; for(const auto& _1 : vector<int>{7, 56, 448, 73, 146, 292, 273, 84})if((a | _1) == a)count++; cout << count << endl;
と同じ
[7,56,448,73,146,292,273,84]
ビンゴである必要条件の#
と.
の並び(例:
#.. .#. ..#
とか
#.. #.. #..
とか)をa=`tr '.#\n' 01_`.to_i 2
と同じ方法で10進数の数にして埋め込んだもの