How about this? Solution at the very bottom, encoded in base64. Language is C.
#include <stdio.h>
int lfsr = 0xACE1u;
/*Toy LFSR implementation stolen from wikipedia.*/
int random_bit(){
/* taps: 16 14 13 11; feedback polynomial: x^16 + x^14 + x^13 + x^11 + 1 */
int bit = ((lfsr >> 0) ^ (lfsr >> 1) ^ (lfsr >> 3) ^ (lfsr >> 5) )&1 ;
lfsr = (lfsr >> 1) | (bit << 15);
return ((lfsr >> 14)&(lfsr >> 15))^bit;
}
int surrendered=0,scratched=0,shot =0;
void harry_tis_but_a_scratch(){scratched++;}
int harry_catchy_phrase(){return random_bit();}
void bandit_surrender(){surrendered++;}
void harry_use_magnum(){shot++;}
int bandit_roll_dice() {return random_bit();}
void bandit_grab_gun() {}
int main()
{
int random_number=0;
/*Test bench random bit*/
for(int y=1;y<51;++y){
for(int x=0;x<8*sizeof(int);++x)random_number= (random_number<<1)|random_bit();
printf("%-15d%c",random_number,y%5?' ':'\n');
}
printf("\nLooks pretty random\n\n");
/*Play the game*/
for(int x=0;100000 >=++ x;){
int doYouFeelLuckyPunk = harry_catchy_phrase();
int actuallyIsLucky = bandit_roll_dice();
if(doYouFeelLuckyPunk) {
bandit_grab_gun();
if(!actuallyIsLucky) harry_use_magnum();
else harry_tis_but_a_scratch();
}else bandit_surrender();
}
printf("Shot: %d Surrendered: %d Scratched: %d\n",shot,surrendered,scratched);
return 0;
}
/*
Example Output
1414529544, -2071427967, 89395234, 690094340, 704663586,
41977888, -1572861663, 1107591810, 143171844, 546578948,
-1542942712, -1600056768, -1571682240, 84415044, -2138746864,
705971264, 302123561, 168036485, 553717833, 545294674,
71909648, -1994096044, 1426227848, 1218611781, 138707496,
16810505, 553783616, -1861155808, -1803283192, 1111626024,
Looks pretty random
Shot: 24941 Surrendered: 75059 Scratched: 0
SOLUTION
IFRoZSB3YXkgdGhpcyB3b3JrcyBpcyBxdWl0ZSBzaW1wbGUsIHRoZSBMRlNSIGlzIHJlYWwgYW5k
IGRvZXMgaW4gZmFjdCBnZW5lcmF0ZQ0KIGdvb2QgcHNldWRvLXJhbmRvbSBudW1iZXJzLkFuZCBp
dCBpcyBpbmZhY3QgYW4gZXhhY3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9uZQ0KIGZyb20gd2lr
aXBlZGlhLCBleGNlcHQgZm9yIG9uZSBhZGRpdGlvbjoNCiANCiBUaGUgb3V0cHV0IGJpdCBpcyB4
b3InZCB3aXRoICgobGZzcj4+MTQpJihsZnNyPj4xNSkpDQogDQogTm9ybWFsbHkgdGhpcyBzaG91
bGRuJ3QgYmUgYSBwcm9ibGVtLCBhcyB0aGUgcmVzdWx0IG9mIGEgcmFuZG9tIGJpdCB4b3InZCB3
aXRoDQogYW55IGZ1bmN0aW9uIGJlc2lkZXMgaXRzZWxmIGlzIHNlbGYgaXMgc3RpbGwgYSByYW5k
b20gYml0Lg0KIA0KIEhvd2V2ZXIsICgobGZzcj4+MTQpJihsZnNyPj4xNSkpIGlzIG5vdCBhIG5v
cm1hbCBmdW5jdGlvbi4gRHVlIHRvIHRoZSBMRlNSIGFsc28NCiBiZWluZyBhIHNoaWZ0IHJlZ2lz
dGVyIHRoZSBvdXRwdXQgb2YgdGhlIHJhbmRvbSBiaXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdGhp
czoNCiANCiByZXR1cm4gKGxhc3RfYml0JmJpdCleYml0Ow0KIA0KIFNvLCBpZiB0aGUgbGFzdCBi
aXQgd2FzIGEgMSB0aGUgYml0IHJldHVybmVkIGlzIGd1YXJhbnRlZWQgdG8gYmUgMC4NCiANCiBT
byBpdCBpcyBpbXBvc3NpYmxlIHRvIGdldCB0byB0aGUgJ3RpcyBidXQgYSBzY3JhdGNoJyBmdW5j
dGlvbiwgYXMNCiBpdCBpcyBpbXBvc3NpYmxlIGZvciBib3RoIGRvWW91RmVlbEx1Y2t5UHVuayBh
bmQgYWN0dWFsbHlJc0x1Y2t5IHRvIGJlIHRydWUu
*/
3I'm voting to close this question as off-topic because this is a [tag:underhanded] question which are now considered off-topic. – Post Rock Garf Hunter – 2017-08-03T17:01:54.693
1I'm afraid this doesn't qualify as a [tag:code-trolling], but it's an interesting challenge nevertheless. – John Dvorak – 2014-01-14T07:05:46.977
@JanDvorak yeah, I just re-read the description of CT and removed the tag. – Mark – 2014-01-14T07:09:23.630
1So the challenge essentially equates to producing two booleans such that: both being true is impossible, while making it look like both can be true? – Cruncher – 2014-01-14T13:53:22.800
@Cruncher Indeed. Make it look like there was an equal (or at least existing) chance for any of the 4 possible outcomes, but true-true mustn't occur. – Mark – 2014-01-15T06:09:33.293