Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@windymelt
Created September 18, 2019 14:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save windymelt/0f4e13ae15d7297f7f4e4a86b7953485 to your computer and use it in GitHub Desktop.
Save windymelt/0f4e13ae15d7297f7f4e4a86b7953485 to your computer and use it in GitHub Desktop.
/*
女騎士「体が熱い…貴様何を!」
オークA「ククク……」
オークB「ククク……」
オークA「俺が女騎士に媚薬を飲ませた」
オークB「オークA、Cは二人とも嘘つきだ」
オークC「女騎士に媚薬を飲ませたのは嘘つきだ」
オークD「オークB、Eの内片方は嘘つきだ」
オークE「俺は媚薬を飲ませてない」
女騎士「オークの内正直なのは二人だけだと分かっている時、私に媚薬を持ったオークとして適当なのは誰だ!?」
*/
one sig 女騎士 {}
abstract sig オーク {
飲ませた : lone 女騎士
}
sig 正直 in オーク {}
sig 飲ませたオーク in オーク {}
one sig オークA, オークB, オークC, オークD, オークE extends オーク {}
fact {
#正直 = 2
}
fact {
#飲ませたオーク = 1
}
fact {
#オーク.飲ませた = 1
}
fact {
all o : 飲ませたオーク | o.飲ませた= 女騎士
}
fact {
オークA in 正直 <=> オークA = 飲ませたオーク
}
fact {
オークB in 正直 <=> (not オークA in 正直 and not オークC in 正直)
}
fact {
オークC in 正直 <=> (not 飲ませたオーク in 正直)
}
fact {
オークD in 正直 <=> (not オークB in 正直 or not オークE in 正直)
}
fact {
オークE in 正直 <=> not オークE in 飲ませたオーク
}
pred show {}
run show
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment