寝癖頭の解法

小学生の目線から、勉強中の覚え書きを投稿、更新していきます。

アルゴ式(beta版): C++による「ビット演算 (8 章:ビット演算の応用)」- Q3. オセロ盤の圧縮

アルゴ式(beta版)の「ビット演算 (8 章:ビット演算の応用)」からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。

C++による「ビット演算 (8 章:ビット演算の応用)」- Q3. オセロ盤の圧縮


僕が作成、提出したコードは、以下のとおりです。

Q3. オセロ盤の圧縮

algo-method.com

/*
アルゴ式(beta版):C++による「ビット演算(8章)」- Q3. オセロ盤の圧縮
Q3. オセロ盤の圧縮
https://algo-method.com/tasks/1069
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(void){
    vector<ll> x(8);
    for(ll i=0;i<8;i++){
        cin>>x[i];
    }
    vector<string> s(8);
    for(ll i=0;i<8;i++){
        for(ll j=0;j<8;j++){
            ll x0=x[i]&1<<(15-2*j);
            ll x1=x[i]&1<<(14-2*j);
            char c;
            if(!x0 && !x1){
                c='.';
            }else if(!x0 && x1){
                c='o';
            }else if(x0 && !x1){
                c='x';
            }
            s[i]+=c;
        }
    }
    for(ll i=0;i<8;i++){
        cout<<s[i]<<endl;
    }
    return 0;
}

設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com