// C++ code
//
struct Bin3 {
byte a, b, c;
};
Bin3 binary(byte n);
void number(int n);
void setup()
{
for(int i=1;i<13;i++){
pinMode(i, OUTPUT);
i>3 ? digitalWrite(i, 0): void(0);
}
digitalWrite(8, 1);
}
void loop()
{
for(int i=4;i<13;i++){
digitalWrite(i, 0);
for(int j=0;j<9;j++){
number(j);
delay(3000);
}
digitalWrite(i, 1);
delay(5000);
}
}
Bin3 binary(byte n) {
return {
(n >> 2) & 1,
(n >> 1) & 1,
n & 1
};
}
void number(int n){
bool logic;
for(int i=0;i<8;i++){
switch(n){
case 0:
logic=(i==6||i==7);
break;
case 1:
logic=(i==0||i==3||i==4||i==5||i==6||i==7);
break;
case 2:
logic=(i==2||i==5||i==7);
break;
case 3:
logic=(i==4||i==5||i==7);
break;
case 4:
logic=(i==0||i==3||i==4||i==7);
break;
case 5:
logic=(i==1||i==4||i==7);
break;
case 6:
logic=(i==1||i==7);
break;
case 7:
logic=(i==3||i==4||i==5||i==6||i==7);
break;
case 8:
logic=(i==7);
break;
case 9:
logic=(i==4||i==7);
break;
}
Bin3 bits = binary(i);
if(!(logic)){
digitalWrite(2, bits.a);
digitalWrite(3, bits.b);
digitalWrite(4, bits.c);
delay(1000);
}
}
}