コーヒートレーダーズ - 豆の分配数を計算
コーヒー豆nの数:
以下がJavaScriptによる実装例です。コーヒートレーダーズのルールに基づいて、変数や配列を用いて計算を行います。また、余った豆の再配布についてもループ処理を使って実現しています。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>コーヒートレーダーズ - 豆の分配数を計算</title>
</head>
<body>
<h1>コーヒートレーダーズ - 豆の分配数を計算</h1>
<p>コーヒー豆nの数:
<input type="text" id="coffeeBeans" name="coffeeBeans">
<button type="button" onclick="calculateBeans()">計算する</button>
</p>
<div id="result"></div>
<script>
function calculateBeans() {
// コーヒー豆の数を取得
const beans = parseInt(document.getElementById("coffeeBeans").value);
// エラーチェック:コーヒー豆数が不正な場合は中断
if (!Number.isInteger(beans) || beans < 1) {
document.getElementById("result").textContent = "コーヒー豆の数を正しく入力してください。";
return;
}
// 公正取引所に配る豆の数
const fairTradeOffice = Math.floor(beans / 6);
// 各プレーヤーに配る豆の数
const players = new Array(5).fill(0);
players[0] = 1; // 最初のプレーヤーに1つ配る
let playerIndex = 1;
let remainingBeans = beans - fairTradeOffice - 1; // 公正取引所と最初のプレーヤーの分を差し引く
while (remainingBeans > 0 && playerIndex < 5) {
players[playerIndex]++;
playerIndex = (playerIndex + 1) % 5; // プレーヤー番号をループ
remainingBeans--;
}
// 余った豆を再分配
if (remainingBeans > 0) {
playerIndex = 0;
while (remainingBeans > 0 && playerIndex < 5) {
const num = Math.min(5 - players[playerIndex], remainingBeans); // 1プレーヤーに配る上限は5つ
players[playerIndex] += num;
remainingBeans -= num;
playerIndex = (playerIndex + 1) % 5;
}
}
// 計算結果の表示
let result = `=== コーヒー豆${beans}個の分配結果 ===<br>`;
result += `公正取引所: ${fairTradeOffice}個<br>`;
for (let i = 0; i < 5; i++) {
result += `プレーヤー${i + 1}: ${players[i]}個<br>`;
}
document.getElementById("result").innerHTML = result;
}
</script>
</body>
</html>
```
なお、ジョークとしては、以下のようなものを考えることができます。
- 「コーヒートレーダーズは、現実のコーヒー市場を再現した実力作!」
- 「豆の分配が公正なのはいいんだけど、プレーヤー5人全員に最大5回豆を配ると、計25回も分配しなきゃいけないんだよね。コーヒーパワーいるわー。」
- 「余った豆を再分配するのは、何回目で全部分配できるんだろう?そんなこと言ったら、コーヒーの冷めちゃうよね。」