ARC021-A DEAD END|AtCoder
A: DEAD END - AtCoder Regular Contest 021 | AtCoderを解きました!
#include <bits/stdc++.h> using namespace std; int main() { int a, n{16}; vector<int> vc; bool flag=false; while(cin>>a){vc.push_back(a);} for(int i=0; i<n; i++){ if(i==0||i==4||i==8||i==12){ if(vc[i]==vc[i+1]||vc[i]==vc[i-4]||vc[i]==vc[i+4]){flag=true;} }else if(i==3||i==7||i==11||i==15){ if(vc[i]==vc[i-1]||vc[i]==vc[i+4]||vc[i]==vc[i-4]){flag=true;} }else{ if(vc[i]==vc[i+1]||vc[i]==vc[i-1]||vc[i]==vc[i+4]||vc[i]==vc[i-4]){flag=true;} } } cout << (flag?"CONTINUE":"GAMEOVER") << endl; return 0; }
この問題「2048」という数値パズルゲームが元となった問題だった様で。
そのゲームを全く知らず、問題のイメージが掴めず手付かずだった。
(多分ゲームを知らなくても解けるんですけど、イメージが掴めないと遠のく...)
で、先日数強フォロワーさんと一緒に2048して遊ぶ機会があって
イメージが掴めたので早速考えて解いてみた!
凄いダメそうなコードで...場合分けしか思いつかなかった...。
(おまけに参照外アクセスをしているかも知れない...)
なので後日強い人のコードを見て復習します。
今回は4*4のマスだけど、本当は一般化出来ていた方が良さそうな気もする...。