/**(c) 2016 Michał (Foxbond) Chraniuk */
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
int main() {
srand(time(NULL));
const int size = 20;
int czapki[size];
int widok[size];
int back[size];
int odp[size];
/*
for (int i = 0;i < size;i++) {
czapki[i] = widok[i] = odp[i] = back[i] = 3;
}
*/
printf("Wiezniowie:\n");
for (int i = 0;i < size;i++) {
czapki[i] = rand() % 2;
printf("%d ", czapki[i]);
}
for (int i = 0;i < size;i++) {
int temp = 0;
for (int y = i+1;y < size;y++) {
if (czapki[y] == 0) temp++;
}
widok[i] = temp % 2;
if (i == 0) {
odp[i] = widok[i];
continue;
}
if (i == 1) {
odp[i] = (odp[i-1] == widok[i]) ? 1 : 0;
continue;
}
temp = 0;
for (int y = 1;y < i;y++) {
if (odp[y] == 0) {
temp++;
}
}
back[i] = temp % 2;
if (odp[0] == 0) {
if (back[i] != 0) {
if (widok[i] == 0) {
odp[i] = 0;
}
else {
odp[i] = 1;
}
}
else {
if (widok[i] == 0) {
odp[i] = 1;
}
else {
odp[i] = 0;
}
}
}
else {
if (back[i] != 0) {
if (widok[i] == 0) {
odp[i] = 1;
}
else {
odp[i] = 0;
}
}
else {
if (widok[i] == 0) {
odp[i] = 0;
}
else {
odp[i] = 1;
}
}
}
}
printf("\nOdpowiedzi:\n");
int saved = 0;
for (int i = 0;i < size;i++) {
printf("%d ", odp[i]);
if (czapki[i] == odp[i]) saved++;
}
printf("\nUratowanych wiezniow: %d\n", saved);
return 0;
}
> Back