<div>
<p><h1>新・見せ算計算機</h1></p>
<label for = "input">入力:</label>
<input type = "text" required id = "input">
<p></p>
<label for = "answer">眼:</label>
<input type = "text" id="answer" disabled>
<p id = "reason">解説</p>
<table>
<tr>
<td><button><input type = "button" id = "gan" value = "👀(見せ)"></td>
<td><button><input type = "button" id = "beauty" value = "👩(優しい女性)"></button></td>
<td><button><input type = "button" id = "calc" value = "計算"></button></td>
<td><button><input type = "button" id = "clear" value = "クリア"></button></td>
</tr>
</table>
<p>使い方:「見せ」はここでは👀の記号で表します。ボタンを押すと入力されます。例えば1👀1を入力して計算、と書かれたボタンを押すと眼(答え)と説明がでます。</p>
<p>👩(優しい女性)のボタンを押すと👩が入力されます。100👩のように使うと100人の中に優しい女性がいることを表します。</p>
<p>1👀2, 6👀9, 2👀5, 1👀100, 1👀100👩, 8👀1, 3👀2👀8などを試してください。</p>
</div>
<script>
"use strict";
const input = document.getElementById("input");
const answer = document.getElementById("answer");
const calc = document.getElementById("calc");
const gan = document.getElementById("gan");
const clear = document.getElementById("clear");
const beauty = document.getElementById("beauty");
const reason = document.getElementById("reason");
gan.addEventListener('click', ()=>{input.value += "👀"; input.focus();});
beauty.addEventListener('click', ()=>{input.value += "👩"; input.focus();});
clear.addEventListener('click', ()=>{input.value =""; input.focus();});
calc.addEventListener('click', mise);
function mise() {
const re = /(\d+)(👩*)👀(\d+)(👩*)👀*(\d*)/u;
const str = input.value;
const num = str.match(re);
let ans;
if (num[2] ==='' && num[4] ==='' && num[5] === '') {
ans = two_items(num[1],num[3]);
} else if ((num[2] ==='👩' || num[4] ==='👩') && num[5] === '') {
ans = extended_two_items(num[1],num[3], num[2], num[4]);
} else if (num[1] === "3" && num[2] ==='' && num[3] === '2' && num[4] ==='' && num[5] === '8') {
ans = three_items();
} else {
ans = [undefined, "さや香のネタにないから"];
}
answer.value = ans[0];
reason.textContent = ans[1];
}
function two_items(a, b) {
let ans = "";
// 同じ数字の場合は0
if (a === b) {
return ["0","同じ数字だと恥ずかしくて立ち去るため"];
}
// 6と9, 2と5の処理
let first = "";
let last = "";
let delim = "";
if (a.length === b.length && /^[69]+$/.test(a) && /^[69]+$/.test(b) ) {
let matched = false;
for (let i = 0; i < a.length; i++) {
if ((a[i] === "6" && b[i] === "9") ||(a[i] === "9" && b[i] === "6")){
first += "1";
last += "1";
matched = true;
} else {
matched = false;
break;
}
}
if (matched) {
return [first + last, "6と9が「俺か?」と近づいて行って1人と1人になるから"];
}
}
if (a.length === b.length && /^[25]+$/.test(a) && /^[25]+$/.test(b) ) {
let matched = false;
for (let i = 0; i < a.length; i++) {
if ((a[i] === "2" && b[i] === "5") ||(a[i] === "5" && b[i] === "2")){
first += "1";
delim += "."
last += "1";
matched = true;
} else {
matched = false;
break;
}
}
if (matched) {
return [first + delim + last, "2と5が「俺か?」と近づいて行って1人と1人になるがあまりに違うので5が携帯(.)を落とすから"];
}
}
if (a === "1" && Number(b) >=100) {
return [String(Number(b)-17), "1は大群で逃げられないと思って腹くくって、うおーって叫びながらバーって100に突っ込んでいって、頑張って17人倒すから"]
}
if (b === "1" && Number(a) >=100) {
return [String(Number(a)-17), "1は大群で逃げられないと思って腹くくって、うおーって叫びながらバーって100に突っ込んでいって、頑張って17人倒すから"]
}
if ((a === "8" && b ==="1") ||(a === "1" && b ==="8") ) {
return ["%", "1は自分が串で8が団子と思って刺しに行き、8は嫌がって避けるがつなぎ目に刺さって分裂するから"]
}
if (Number(a) > Number(b)) {
return [a, "小さいものが大きいものを見ると怖いから小さい方が立ち去る"];
} else {
return [b, "小さいものが大きいものを見ると怖いから小さい方が立ち去る"];
}
return [undefined, "さや香のネタにないから"];
}
function extended_two_items(a, b, ex1, ex2) {
let ans = ""
if (a === "1" && Number(b) >=100 && ex2 ==="👩") {
return [String(Number(b)-17+1), "1は大群で逃げられないと思って腹くくって、うおーって叫びながらバーって大群に突っ込んでいって、頑張って17人倒すが自分も倒れ中に優しい女性が1人いて介抱され、その2人が恋に落ちて後々結婚して子供が1人生まれてさらにまた1増えるから"]
}
if (b === "1" && Number(a) >=100 && ex1 ==="👩") {
return [String(Number(a)-17+1), "1は大群で逃げられないと思って腹くくって、うおーって叫びながらバーって大群に突っ込んでいって、頑張って17人倒すが自分も倒れ中に優しい女性が1人いて介抱され、その2人が恋に落ちて後々結婚して子供が1人生まれてさらにまた1増えるから"]
}
return [undefined, "さや香のネタにないから"];
}
function three_items() {
return ["140", "3と2と8はとても仲が良く肩を組み合い、俺ら(328)三ツ矢サイダーやな、という。三ツ矢サイダーは140周年だから。"]
}
最近のコメント