5人のテストの点数の合計は
最上位と最下位の点数の差は
生徒の中に嘘つきが1人います。
彼らの台詞から 嘘をついている生徒 の 点数 を当ててください。
彼らの台詞から 嘘をついている生徒 の 点数 を当ててください。
ヒント:簡易計算機
view source
JavaScript
document.title = '論理パズル 嘘つきはだれだ? 数字の脳トレゲーム ';
document.oncontextmenu = function () {return false;}
var clearCount = 0;
a = Math.floor(Math.random()*4)*3+80;
b = a - Math.floor(Math.random()*4+1)*4;
c = a - Math.floor(Math.random()*3+2)*10;
e = 10 + Math.floor(Math.random()*9+1)*5;
d = e + Math.floor(Math.random()*4+1)*3;
rr = Math.floor(Math.random()*9);
if(rr>6){
e = c + Math.floor(Math.random()*2+1)*9;
d = e + Math.floor(Math.random()*5+1);
}
f = e - Math.floor(Math.random()*5-2)*3;
g = b + Math.floor(Math.random()*5-2)*5;
h = b + Math.floor(Math.random()*5-2)*7;
k = b + 1;
m = b + 2;
x = a - Math.floor(Math.random()*2+2)*5;
y = a - Math.floor(Math.random()*3-1)*3;
z = a - Math.floor(Math.random()*3-2);
//console.log([a,b,c,d,e]);
//console.log('a,b,c,d,e');
//console.log(a+b+c+d+e);
//console.log('a-e');
//console.log(a-e);
//console.log('d-e');
//console.log(d-e);
//console.log('a+b+c');
//console.log(a+b+c);
answerAry = [a,b,c,d,e];
foolIndex = Math.floor(Math.random()*answerAry.length);
answer = answerAry[foolIndex];
ary = [a,b,c,d,e,f,g,h,x,y,z];
sortAry = _.sortBy(_.clone(answerAry));
abcAry = _.clone(sortAry).slice(0, 3);
cdeAry = _.clone(sortAry).slice(2, 5);
//console.log(sortAry);
//console.log(abcAry);
//console.log(cdeAry);
let cde = abcAry.reduce((a, b) => {
return a + b;
});
let abc = cdeAry.reduce((a, b) => {
return a + b;
});
//console.log(cde);
//console.log(abc);
$(function(){
//console.log([a,b,c,d,e]);
$('sum').text(a+b+c+d+e);
$('dif').text(a-e);
$('max').text(a);
$('point.a').text(a);
$('point.a-c').text(a-c);
$('point.abc').text(abc);
$('point.cde').text(cde);
$('point.d-e').text((d-e));
$('point.b-d').text((b-d));
$('point.c').text(c);
$('point.e').text(e);
$('point.ae').text((a+e));
answerAry.forEach(function(v, i){
$('truth').eq(i).text(v);
});
$('.chat-a').each(function(i){
var isFool = false;
if(i===foolIndex){
isFool = true;
$(this).addClass('fool');
}
$(this).find('point').each(function(j){
if(isFool){
var v = Number($(this).text());
foolNum = v + Math.floor(Math.random()*13+11);
$(this).text(foolNum);
}
});
});
ary = _.uniq(ary);
allAry = _.sortBy(ary);
$buttons = $('.buttons');
$buttons.addClass('confirm');
setTimeout(function(){
$buttons.removeClass('confirm');
}, 9*999);
allAry.forEach(function(v){
$btn = $('<button>').text(v);
$buttons.append($btn);
if(v===answer){
$btn.addClass('answer');
}
$btn.on('click',function(){
if($('#target').hasClass('result')){return;}
if($buttons.hasClass('confirm')){
if(!window.confirm('計算した?')){return;}
}
if(v===answer){
clearCount++;
$(this).addClass('ok');
//$('.serif').text('さすがやでw');
let key = getURLKEY();
if(key && clearCount === 1){
key = decodeURI(key);
$key = $('<p>',{id:'keyCrypto'}).text(key);
$key.on('dblclick',function(){$(this).remove();});
$('#demo').append($key);
}
} else {
$(this).addClass('ng');
$('.serif').text('ハズレ!');
}
$('#target').addClass('result');
$next = $('<button>').text('次の問題へ').addClass('next');
$buttons.after($next);
$next.on('click',function(){
location.reload();
});
});
});
});
$(function(){
$('input[type="number"]').val(0);
$inputs = $('input[class="member"]');
$inputs.attr({min:0,max:100});
$inputs.on('change', function(){
inputAry = [];
$inputs.each(function(){
v = Number($(this).val());
inputAry.push(v);
});
var inputSortAry = _.sortBy(inputAry);
var sum = inputSortAry.reduce((a, b) => {return a + b;});
var max = inputSortAry[4];
var min = inputSortAry[0];
var dif = max-min;
$('[name="sum"]').val(sum);
$('[name="dif"]').val(dif);
});
$('[name="n1"],[name="n2"],[name="n3"]').on('change', function(){
var n0 = Number($('[name="n1"]').val())
+ Number($('[name="n2"]').val())
+ Number($('[name="n3"]').val());
$('[name="n0"]').val(n0);
});
$('[name="m1"],[name="m2"],[name="m3"]').on('change', function(){
var m0 = Number($('[name="m1"]').val())
- Number($('[name="m2"]').val())
- Number($('[name="m3"]').val());
$('[name="m0"]').val(m0);
});
});
CSS
#demo{
text-align:center;
}
#target{
margin:0 auto;
max-width:780px;
text-align:left;
}
b{
font-weight:bold;
}
.chat{
padding: 1rem;
border: 0 solid #d9d9e3;
border-color: rgba(0,0,0,.1);
border-bottom-width: 1px;
font-family: Söhne,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
color:#374151;
}
.chat-in{
padding:16px 0;
margin:0 auto;
max-width: 42rem;
gap: 1rem;
font-size: 1rem;
line-height: 1.5rem;
display: flex;
}
.chat-a{
background-color: rgba(247,247,248)
}
.color-light,
.chat-a.light{
background-color:#F7F7F7;
}
.color-dark,
.chat-a.dark{
background-color:#444654;
color:#ccc;
}
.chat-q.dark{
background-color:#343440;
color:#ccc;
}
.icon{
display:inline-block;
width:30px;
height:30px;
background-color: rgb(255, 255, 255);
}
.chat-q .icon{
background-color: rgba(0, 0, 0, 0.3);
}
.chat-a.dark .icon{
background-color: rgb(0, 0, 0);
}
.icon img{
width:30px;
height:30px;
}
form i{
display:inline-block;
width:32px;
height:32px;
}
text{
width: calc(100% - 115px);
gap: 0.75rem;
}
text > *{
display:inline-block;
font-weight:bold;
padding:0 8px;
}
b{
font-weight:bold;
}
.result .fool{
color:#f00;
}
truth{
color:transparent;
user-select:none;
}
.result truth{
color:#3a3;
}
.ok{
background-color:#afa;
}
.ng{
background-color:#faa;
}
.result .answer{
background-color:#6f6;
}
.buttons{
padding:8px 16px;
text-align:center;
}
.buttons button{
padding:8px 16px;
margin:0 4px;
}
.next{
width:100%;
font-size:32px;
text-align:center;
margin:16px 0;
}
#hint{
padding:12px;
margin-bottom:40px;
}
input[type="number"]{
margin:8px 0;
width:40px;
}
input[readonly]{
background-color:#eee;
}
label b{
display:inline-block;
width:40px;
}
#code{
display:none;
}
HTML
ページのソースを表示 : Ctrl+U , DevTools : F12
view-source:https://hi0a.com/demo/-js/js-game-logic-puzzle/
ABOUT
hi0a.com 「ひまアプリ」は無料で遊べるミニゲームや便利ツールを公開しています。
プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。
必要な機能の関数をコピペ利用したり勉強に活用できます。
プログラムの動作サンプル結果は画面上部に出力表示されています。
環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。
画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。
動く便利なものが好きなだけで技術自体に興味はないのでコードは汚いです。
途中放置や実験状態、仕様変更、API廃止等で動かないページもあります。