All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars    
perplexus dot info

Home > Logic > Liars and Knights
A Chamsonel Problem II (Posted on 2012-10-19) Difficulty: 3 of 5
The dominant species in Planet Blancneldos is the chamsonels. There are two types of chamsonels - logicians and philosophers. The chamsonels also have two different skin colors related to their veracity. Pink logician chamsonels always lie while blue logician chamsonels always tell the truth. Pink philosopher chamsonels always speak truthfully but blue philosopher chamsonels always speak falsely.

Three chamsonels A, B and C are approached by a visitor from a neighboring planet who asks each of their skin color and type. Their responses are given below. It is known that the visitor is color blind.
A's response
1. B is a pink philosopher.
2. My color is pink.

B's response
C is a blue logician.

C's response
1. Each of the two statements made by A is a lie.
2. B is a blue logician.

What are the type and skin color of each chamsonel?

See The Solution Submitted by K Sengupta    
Rating: 2.0000 (1 votes)

Comments: ( Back to comment list | You must be logged in to post comments.)
Solution solution | Comment 2 of 3 |

If A is speaking truthfully, he's a pink philosopher and so is B.

That would make B to be telling the truth and therefore C, a blue logician telling the truth.

But C contradicts A, so our original assumption that A speaks the truth is wrong.

A lies and is therefore a blue philosopher. Also C is telling the truth, as he contradicts A, so B is a blue logician and is telling the truth about C, whose truth telling is therefore the result of his also being a blue logician.

I guess that was faster than the 20 minutes it took to write the below program:

true = (1 = 1)
col$ = "pb"
occ$ = "lp"
FOR ac = 1 TO 2
FOR ao = 1 TO 2
  at$ = MID$(col$, ac, 1) + MID$(occ$, ao, 1)
  IF at$ = "bl" OR at$ = "pp" THEN atr = true:  ELSE atr = false
FOR bc = 1 TO 2
FOR bo = 1 TO 2
  bt$ = MID$(col$, bc, 1) + MID$(occ$, bo, 1)
  IF bt$ = "bl" OR bt$ = "pp" THEN btr = true:  ELSE btr = false
FOR cc = 1 TO 2
FOR co = 1 TO 2
  ct$ = MID$(col$, cc, 1) + MID$(occ$, co, 1)
  IF ct$ = "bl" OR ct$ = "pp" THEN ctr = true:  ELSE ctr = false
  good = 1
  IF atr <> (bt$ = "pp") THEN good = 0
  IF atr <> (LEFT$(at$, 1) = "p") THEN good = 0

  IF btr <> (ct$ = "bl") THEN good = 0

  IF ctr = atr THEN good = 0
  IF ctr <> (bt$ = "bl") THEN good = 0

  IF good THEN
    PRINT "a="; at$
    PRINT "b="; bt$
    PRINT "c="; ct$





A is a blue philosopher
B is a blue logician
C is a blue logician

  Posted by Charlie on 2012-10-19 12:48:20
Please log in:
Remember me:
Sign up! | Forgot password

Search body:
Forums (0)
Newest Problems
Random Problem
FAQ | About This Site
Site Statistics
New Comments (0)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On

Copyright © 2002 - 2018 by Animus Pactum Consulting. All rights reserved. Privacy Information