Skill: kickegg/brain-teaser-game (version 1.0.1)

--- name: brain-teaser-game description: | [中文] 多语言脑筋急转弯互动游戏，支持中文、英文、日文。自动检测用户语言，支持随机出题、答案判断、提示系统、不重复题目历史记录。 [English] Multi-language brain teaser interactive game supporting Chinese, English, and Japanese. Auto-detects user language with random questions, answer matching, hint system, and no-repeat history. [日本語] 多言語なぞなぞインタラクティブゲーム。中国語、英語、日本語に対応。ユーザーの言語を自動検出し、ランダム出題、回答判定、ヒント機能、履歴管理を提供。 --- # 🧠 Brain Teaser / 脑筋急转弯 / なぞなぞ --- ## 🇨🇳 中文 多语言脑筋急转弯互动游戏，支持中文、英文、日文。 ### 功能 - 自动检测用户语言（中文/英文/日文） - 200+ 题目库（每种语言） - 智能答案匹配（模糊匹配） - 提示系统 - 历史记录（不重复题目） ### 使用方法 #### 开始游戏 ```bash ./invoke.sh start "来个脑筋急转弯" ``` #### 游戏中操作 | 操作 | 命令 | |------|------| | 回答 | 直接输入答案 | | 提示 | 输入"提示" | | 答案 | 输入"答案" | | 下一题 | 输入"下一题" | #### 命令行接口 ```bash # 提交答案 ./invoke.sh answer {session_id} "你的答案" # 获取提示 ./invoke.sh hint {session_id} # 查看答案 ./invoke.sh reveal {session_id} # 下一题 ./invoke.sh next {session_id} # 交互模式（自动检测意图） ./invoke.sh interactive {session_id} "提示" ./invoke.sh interactive {session_id} "你的答案" # 重置历史记录 ./invoke.sh reset-history ``` ### 输出格式 所有输出为 Markdown 格式，包含： - 当前题目 - 提示（如请求） - 答案反馈 - 游戏统计 - 会话 ID ### AI 题目生成（可选） 配置环境变量启用 AI 动态生成新题： ```bash export BRAIN_TEASER_API_KEY=your-api-key export BRAIN_TEASER_API_BASE=https://api.example.com/v1 # 可选 export BRAIN_TEASER_MODEL=gpt-4 # 可选 ``` API 配置读取优先级： 1. 环境变量 `BRAIN_TEASER_API_KEY` 2. `~/.claude/settings.json` 3. `~/.openclaw/openclaw.json` --- ## 🇺🇸 English Multi-language brain teaser interactive game supporting Chinese, English, and Japanese. ### Features - Auto-detect user language (Chinese/English/Japanese) - 200+ question pool per language - Smart answer matching (fuzzy matching) - Hint system - History tracking (no repeated questions) ### Usage #### Start Game ```bash ./invoke.sh start "Give me a brain teaser" ``` #### In-Game Operations | Action | Command | |--------|---------| | Answer | Type your answer directly | | Hint | Type "hint" | | Reveal Answer | Type "answer" | | Next Question | Type "next" | #### Command Line Interface ```bash # Submit answer ./invoke.sh answer {session_id} "your answer" # Get hint ./invoke.sh hint {session_id} # Reveal answer ./invoke.sh reveal {session_id} # Next question ./invoke.sh next {session_id} # Interactive mode (auto-detect intent) ./invoke.sh interactive {session_id} "hint" ./invoke.sh interactive {session_id} "your answer" # Reset history ./invoke.sh reset-history ``` ### Output Format All output is in Markdown format, including: - Current question - Hint (if requested) - Answer feedback - Game statistics - Session ID ### AI Question Generation (Optional) Configure environment variables to enable AI dynamic question generation: ```bash export BRAIN_TEASER_API_KEY=your-api-key export BRAIN_TEASER_API_BASE=https://api.example.com/v1 # optional export BRAIN_TEASER_MODEL=gpt-4 # optional ``` API configuration priority: 1. Environment variable `BRAIN_TEASER_API_KEY` 2. `~/.claude/settings.json` 3. `~/.openclaw/openclaw.json` --- ## 🇯🇵 日本語 中国語、英語、日本語に対応したなぞなぞインタラクティブゲーム。 ### 機能 - ユーザーの言語を自動検出（中国語/英語/日本語） - 各言語200問以上の問題 - スマートな回答マッチング（曖昧検索対応） - ヒント機能 - 履歴管理（重複なし） ### 使い方 #### ゲーム開始 ```bash ./invoke.sh start "なぞなぞをください" ``` #### ゲーム中の操作 | 操作 | コマンド | |------|----------| | 回答 | 答えを直接入力 | | ヒント | 「ヒント」と入力 | | 答えを見る | 「答え」と入力 | | 次の問題 | 「次」と入力 | #### コマンドラインインターフェース ```bash # 回答を送信 ./invoke.sh answer {session_id} "あなたの答え" # ヒントを取得 ./invoke.sh hint {session_id} # 答えを表示 ./invoke.sh reveal {session_id} # 次の問題 ./invoke.sh next {session_id} # インタラクティブモード（意図を自動検出） ./invoke.sh interactive {session_id} "ヒント" ./invoke.sh interactive {session_id} "あなたの答え" # 履歴をリセット ./invoke.sh reset-history ``` ### 出力形式 すべての出力はMarkdown形式で、以下を含みます： - 現在の問題 - ヒント（リクエスト時） - 回答フィードバック - ゲーム統計 - セッションID ### AI問題生成（オプション） AI動的問題生成を有効にするには環境変数を設定： ```bash export BRAIN_TEASER_API_KEY=your-api-key export BRAIN_TEASER_API_BASE=https://api.example.com/v1 # オプション export BRAIN_TEASER_MODEL=gpt-4 # オプション ``` API設定の優先順位： 1. 環境変数 `BRAIN_TEASER_API_KEY` 2. `~/.claude/settings.json` 3. `~/.openclaw/openclaw.json` --- ## 📁 File Structure / 文件结构 / ファイル構成 ``` brainTeaser/ ├── SKILL.md # This file / 本文件 / このファイル ├── invoke.sh # Bash entry / Bash入口 / Bashエントリ ├── invoke.py # Core implementation / 核心实现 / コア実装 ├── language.py # Language detection / 语言检测 / 言語検出 ├── answer.py # Answer matching / 答案判断 / 回答判定 ├── session.py # Session management / 会话管理 / セッション管理 ├── ai_generator.py # AI generation (optional) / AI生成（可选） / AI生成（オプション） └── data/ ├── zh.json # Chinese questions / 中文题库 / 中国語問題 ├── en.json # English questions / 英文题库 / 英語問題 └── ja.json # Japanese questions / 日文题库 / 日本語問題 ``` ## 🔧 Dependencies / 依赖 / 依存関係 - Python 3.6+ - No external dependencies (standard library only) / 无外部依赖（标准库）/ 外部依存なし（標準ライブラリのみ）

path: _meta.json
content: {
  "name": "brainTeaser",
  "version": "1.0.0",
  "description": "多语言脑筋急转弯互动游戏 / Multi-language Brain Teaser Game / 多言語なぞなぞゲーム",
  "description_zh": "多语言脑筋急转弯互动游戏，支持中文、英文、日文，拥有600+题库",
  "description_en": "Multi-language brain teaser interactive game supporting Chinese, English, and Japanese with 600+ questions",
  "description_ja": "多言語なぞなぞインタラクティブゲーム。中国語、英語、日本語に対応、600問以上収録",
  "author": "OpenClaw",
  "tags": ["game", "brain-teaser", "riddle", "multilingual", "interactive"],
  "languages": ["zh", "en", "ja"],
  "entry": "invoke.sh",
  "requires": ["python3"],
  "config": {
    "ai_generation": {
      "enabled": false,
      "env_vars": ["BRAIN_TEASER_API_KEY", "BRAIN_TEASER_API_BASE", "BRAIN_TEASER_MODEL"]
    }
  }
}


path: answer.py
content: #!/usr/bin/env python3
"""
答案判断模块
支持多语言的模糊答案匹配
"""

import re
import unicodedata
from typing import Tuple


def normalize_text(text: str) -> str:
    """
    标准化文本：去除空格、标点，统一大小写

    Args:
        text: 原始文本

    Returns:
        标准化后的文本
    """
    if not text:
        return ""

    # 去除首尾空格
    text = text.strip()

    # 全角转半角
    text = fullwidth_to_halfwidth(text)

    # 转小写（对英文有效）
    text = text.lower()

    # 去除常见标点
    text = re.sub(r'[，。！？、；：""''（）【】《》\s,.!?;:\'"()\[\]<>]', '', text)

    return text


def fullwidth_to_halfwidth(text: str) -> str:
    """
    全角字符转半角字符

    Args:
        text: 包含全角字符的文本

    Returns:
        转换后的文本
    """
    result = []
    for char in text:
        code = ord(char)
        # 全角空格
        if code == 0x3000:
            result.append(' ')
        # 全角字符（! 到 ~）
        elif 0xFF01 <= code <= 0xFF5E:
            result.append(chr(code - 0xFEE0))
        else:
            result.append(char)
    return ''.join(result)


def extract_answer(text: str, language: str) -> str:
    """
    从用户输入中提取答案

    支持格式：
    - 中文："答案是水"、"是水"、"水"
    - 英文："the answer is water"、"water"
    - 日文："答えは水"、"水"

    Args:
        text: 用户输入
        language: 语言代码

    Returns:
        提取的答案
    """
    text = text.strip()

    if language == "zh":
        # 中文格式：答案是X、是X、答案X、我觉得是X
        patterns = [
            r'^答案[是为：:]\s*(.+)$',
            r'^[是为：:]\s*(.+)$',
            r'^答案\s*(.+)$',
            r'^我觉得[是为]\s*(.+)$',
            r'^我猜[是为]\s*(.+)$',
            r'^应该[是为]\s*(.+)$',
        ]
        for pattern in patterns:
            match = re.match(pattern, text)
            if match:
                return match.group(1).strip()

    elif language == "en":
        # 英文格式：the answer is X、it's X、X
        patterns = [
            r'^the\s+answer\s+is\s+(.+)$',
            r'^answer[:\s]+(.+)$',
            r'^it\'?s?\s+(.+)$',
            r'^i\s+(?:think|guess|say)\s+(?:it\'?s?\s+)?(.+)$',
        ]
        for pattern in patterns:
            match = re.match(pattern, text.lower())
            if match:
                return match.group(1).strip()

    elif language == "ja":
        # 日文格式：答えはX、Xです
        patterns = [
            r'^答え[はが][:：]?\s*(.+?)(?:です|だ)?$',  # 答えはX
            r'^(.+?)です$',  # Xです
            r'^正解[はが][:：]?\s*(.+)$',  # 正解はX
        ]
        for pattern in patterns:
            match = re.match(pattern, text)
            if match:
                return match.group(1).strip()

    # 直接返回原文
    return text


def check_answer(user_answer: str, correct_answer: str, language: str = "zh") -> Tuple[bool, str]:
    """
    检查用户答案是否正确

    Args:
        user_answer: 用户的答案
        correct_answer: 正确答案
        language: 语言代码

    Returns:
        (是否正确, 反馈消息)
    """
    if not user_answer:
        return False, "请提供答案"

    # 提取实际答案
    extracted = extract_answer(user_answer, language)

    # 标准化比较
    normalized_user = normalize_text(extracted)
    normalized_correct = normalize_text(correct_answer)

    # 完全匹配
    if normalized_user == normalized_correct:
        return True, "正确！"

    # 包含匹配（用户答案包含正确答案或反之）
    if normalized_correct in normalized_user or normalized_user in normalized_correct:
        # 但要避免太短的情况（比如用户输入"一"匹配到"一年"）
        if len(normalized_user) >= 2 or len(normalized_correct) <= 2:
            return True, "正确！"

    # 模糊匹配（允许一些常见变体）
    if fuzzy_match(normalized_user, normalized_correct, language):
        return True, "正确！"

    return False, "不对哦，再想想~"


def fuzzy_match(user: str, correct: str, language: str) -> bool:
    """
    模糊匹配，处理一些常见的变体

    Args:
        user: 用户答案
        correct: 正确答案
        language: 语言代码

    Returns:
        是否匹配
    """
    # 数字变体（一/1/壹）
    number_map = {
        'zh': {
            '零': ['0', '〇', '零'],
            '一': ['1', '一', '壹', '么'],
            '二': ['2', '二', '贰', '两'],
            '三': ['3', '三', '叁'],
            '四': ['4', '四', '肆'],
            '五': ['5', '五', '伍'],
            '六': ['6', '六', '陆'],
            '七': ['7', '七', '柒'],
            '八': ['8', '八', '捌'],
            '九': ['9', '九', '玖'],
            '十': ['10', '十', '拾'],
        },
        'en': {
            'zero': ['0', 'zero', 'none'],
            'one': ['1', 'one'],
            'two': ['2', 'two'],
            'three': ['3', 'three'],
            'four': ['4', 'four'],
            'five': ['5', 'five'],
            'six': ['6', 'six'],
            'seven': ['7', 'seven'],
            'eight': ['8', 'eight'],
            'nine': ['9', 'nine'],
            'ten': ['10', 'ten'],
        }
    }

    # 简单的数字匹配
    if language in number_map:
        for key, variants in number_map[language].items():
            if user in variants and correct in variants:
                return True
            if correct in variants and user in variants:
                return True

    # 编辑距离（允许1个字符差异，仅对短字符串）
    if len(user) <= 3 and len(correct) <= 3:
        if levenshtein_distance(user, correct) <= 1:
            return True

    return False


def levenshtein_distance(s1: str, s2: str) -> int:
    """
    计算两个字符串的编辑距离

    Args:
        s1: 字符串1
        s2: 字符串2

    Returns:
        编辑距离
    """
    if len(s1) < len(s2):
        return levenshtein_distance(s2, s1)

    if len(s2) == 0:
        return len(s1)

    previous_row = range(len(s2) + 1)
    for i, c1 in enumerate(s1):
        current_row = [i + 1]
        for j, c2 in enumerate(s2):
            insertions = previous_row[j + 1] + 1
            deletions = current_row[j] + 1
            substitutions = previous_row[j] + (c1 != c2)
            current_row.append(min(insertions, deletions, substitutions))
        previous_row = current_row

    return previous_row[-1]


if __name__ == "__main__":
    # 测试用例
    print("=== 答案提取测试 ===")
    test_extractions = [
        ("答案是水", "zh", "水"),
        ("是水", "zh", "水"),
        ("水", "zh", "水"),
        ("The answer is water", "en", "water"),
        ("water", "en", "water"),
        ("答えは水", "ja", "水"),
    ]
    for text, lang, expected in test_extractions:
        result = extract_answer(text, lang)
        status = "✓" if result == expected else "✗"
        print(f"{status} '{text}' -> '{result}' (expected: '{expected}')")

    print("\n=== 答案检查测试 ===")
    test_checks = [
        ("水", "水", "zh", True),
        ("答案是水", "水", "zh", True),
        ("１", "1", "zh", True),  # 全角数字
        ("water", "water", "en", True),
        ("The answer is piano", "piano", "en", True),
        ("錯", "错", "zh", True),  # 繁简体（简化处理）
    ]
    for user, correct, lang, expected in test_checks:
        result, msg = check_answer(user, correct, lang)
        status = "✓" if result == expected else "✗"
        print(f"{status} '{user}' vs '{correct}' -> {result} ({msg})")


path: invoke.sh
content: #!/bin/bash
# 脑筋急转弯 Skill 入口脚本

set -e

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# 切换到脚本目录
cd "$SCRIPT_DIR"

# 检查 Python
if ! command -v python3 &> /dev/null; then
    echo "错误：需要 Python 3"
    exit 1
fi

# 运行 Python 脚本
python3 invoke.py "$@"


path: session.py
content: #!/usr/bin/env python3
"""
会话管理模块
管理游戏会话状态和历史记录
"""

import json
import os
import time
import uuid
from dataclasses import dataclass, field, asdict
from typing import Optional, Set, List, Dict, Any
from pathlib import Path


# 数据存储目录
CACHE_DIR = Path.home() / ".cache" / "brain-teaser"
SESSIONS_DIR = CACHE_DIR / "sessions"
HISTORY_FILE = CACHE_DIR / "history.json"

# 历史记录最大条数
MAX_HISTORY_SIZE = 1000


@dataclass
class Question:
    """题目数据结构"""
    id: int
    question: str
    answer: str
    hint: str
    explain: str
    difficulty: int = 1
    source: str = "builtin"  # builtin 或 ai_generated


@dataclass
class Session:
    """游戏会话"""
    session_id: str
    language: str
    current_question: Optional[Question] = None
    hints_shown: int = 0
    questions_answered: int = 0
    correct_answers: int = 0
    created_at: float = field(default_factory=time.time)
    updated_at: float = field(default_factory=time.time)

    def to_dict(self) -> Dict[str, Any]:
        """转换为字典"""
        data = asdict(self)
        if self.current_question:
            data['current_question'] = asdict(self.current_question)
        return data

    @classmethod
    def from_dict(cls, data: Dict[str, Any]) -> 'Session':
        """从字典创建"""
        if data.get('current_question'):
            data['current_question'] = Question(**data['current_question'])
        return cls(**data)


class SessionManager:
    """会话管理器"""

    def __init__(self):
        self._ensure_dirs()

    def _ensure_dirs(self):
        """确保目录存在"""
        CACHE_DIR.mkdir(parents=True, exist_ok=True)
        SESSIONS_DIR.mkdir(parents=True, exist_ok=True)

    def create_session(self, language: str) -> Session:
        """
        创建新会话

        Args:
            language: 语言代码

        Returns:
            新会话对象
        """
        session_id = str(uuid.uuid4())[:8]
        session = Session(
            session_id=session_id,
            language=language
        )
        self._save_session(session)
        return session

    def get_session(self, session_id: str) -> Optional[Session]:
        """
        获取会话

        Args:
            session_id: 会话ID

        Returns:
            会话对象或 None
        """
        session_file = SESSIONS_DIR / f"{session_id}.json"
        if not session_file.exists():
            return None

        try:
            with open(session_file, 'r', encoding='utf-8') as f:
                data = json.load(f)
            return Session.from_dict(data)
        except (json.JSONDecodeError, KeyError):
            return None

    def update_session(self, session: Session) -> None:
        """
        更新会话

        Args:
            session: 会话对象
        """
        session.updated_at = time.time()
        self._save_session(session)

    def _save_session(self, session: Session) -> None:
        """保存会话到文件"""
        session_file = SESSIONS_DIR / f"{session.session_id}.json"
        with open(session_file, 'w', encoding='utf-8') as f:
            json.dump(session.to_dict(), f, ensure_ascii=False, indent=2)

    def delete_session(self, session_id: str) -> None:
        """删除会话"""
        session_file = SESSIONS_DIR / f"{session_id}.json"
        if session_file.exists():
            session_file.unlink()

    def cleanup_old_sessions(self, max_age_hours: int = 24) -> int:
        """
        清理过期会话

        Args:
            max_age_hours: 最大保留时间（小时）

        Returns:
            清理的会话数量
        """
        cleaned = 0
        cutoff = time.time() - (max_age_hours * 3600)

        for session_file in SESSIONS_DIR.glob("*.json"):
            try:
                with open(session_file, 'r', encoding='utf-8') as f:
                    data = json.load(f)
                if data.get('updated_at', 0) < cutoff:
                    session_file.unlink()
                    cleaned += 1
            except (json.JSONDecodeError, KeyError):
                session_file.unlink()
                cleaned += 1

        return cleaned


class HistoryManager:
    """历史记录管理器"""

    def __init__(self):
        self._ensure_file()

    def _ensure_file(self):
        """确保历史文件存在"""
        if not HISTORY_FILE.exists():
            self._save_history({"zh": {"used_ids": [], "generated": []},
                               "en": {"used_ids": [], "generated": []},
                               "ja": {"used_ids": [], "generated": []}})

    def _load_history(self) -> Dict[str, Any]:
        """加载历史记录"""
        try:
            with open(HISTORY_FILE, 'r', encoding='utf-8') as f:
                return json.load(f)
        except (json.JSONDecodeError, FileNotFoundError):
            return {"zh": {"used_ids": [], "generated": []},
                    "en": {"used_ids": [], "generated": []},
                    "ja": {"used_ids": [], "generated": []}}

    def _save_history(self, data: Dict[str, Any]) -> None:
        """保存历史记录"""
        data["last_updated"] = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
        with open(HISTORY_FILE, 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)

    def get_used_ids(self, language: str) -> Set[int]:
        """获取已使用的题目ID"""
        history = self._load_history()
        lang_data = history.get(language, {"used_ids": []})
        return set(lang_data.get("used_ids", []))

    def mark_question_used(self, question_id: int, language: str) -> None:
        """标记题目已使用"""
        history = self._load_history()
        if language not in history:
            history[language] = {"used_ids": [], "generated": []}

        used_ids = set(history[language].get("used_ids", []))
        used_ids.add(question_id)
        history[language]["used_ids"] = list(used_ids)

        # 检查是否需要清理
        total_count = sum(len(h.get("used_ids", [])) for h in history.values() if isinstance(h, dict))
        if total_count > MAX_HISTORY_SIZE:
            self._cleanup_history(history)

        self._save_history(history)

    def get_unused_questions(self, language: str, questions: List[Question]) -> List[Question]:
        """获取未使用的题目"""
        used_ids = self.get_used_ids(language)
        return [q for q in questions if q.id not in used_ids]

    def add_generated_question(self, question: Question, language: str) -> None:
        """添加 AI 生成的题目到历史"""
        history = self._load_history()
        if language not in history:
            history[language] = {"used_ids": [], "generated": []}

        if "generated" not in history[language]:
            history[language]["generated"] = []

        history[language]["generated"].append(asdict(question))
        history[language]["used_ids"].append(question.id)

        self._save_history(history)

    def get_generated_questions(self, language: str) -> List[Question]:
        """获取 AI 生成的题目"""
        history = self._load_history()
        lang_data = history.get(language, {"generated": []})
        generated = lang_data.get("generated", [])
        return [Question(**q) for q in generated]

    def reset_history(self, language: Optional[str] = None) -> None:
        """
        重置历史记录

        Args:
            language: 指定语言则只重置该语言，None 则重置全部
        """
        if language:
            history = self._load_history()
            history[language] = {"used_ids": [], "generated": []}
            self._save_history(history)
        else:
            self._save_history({
                "zh": {"used_ids": [], "generated": []},
                "en": {"used_ids": [], "generated": []},
                "ja": {"used_ids": [], "generated": []}
            })

    def _cleanup_history(self, history: Dict[str, Any]) -> None:
        """清理历史记录，保留最近的记录"""
        # 简单策略：重置所有历史
        for lang in ["zh", "en", "ja"]:
            if lang in history:
                history[lang]["used_ids"] = []
                # 保留生成的题目


if __name__ == "__main__":
    # 测试会话管理
    print("=== 会话管理测试 ===")
    sm = SessionManager()

    # 创建会话
    session = sm.create_session("zh")
    print(f"创建会话: {session.session_id}")

    # 获取会话
    loaded = sm.get_session(session.session_id)
    print(f"加载会话: {loaded.session_id if loaded else 'None'}")

    # 更新会话
    session.questions_answered = 1
    sm.update_session(session)

    # 测试历史记录
    print("\n=== 历史记录测试 ===")
    hm = HistoryManager()

    # 重置历史
    hm.reset_history("zh")

    # 标记已使用
    hm.mark_question_used(1, "zh")
    hm.mark_question_used(2, "zh")

    used = hm.get_used_ids("zh")
    print(f"已使用ID: {used}")

    # 测试未使用筛选
    questions = [Question(id=i, question=f"Q{i}", answer="A", hint="H", explain="E") for i in range(1, 6)]
    unused = hm.get_unused_questions("zh", questions)
    print(f"未使用题目ID: {[q.id for q in unused]}")


path: README.md
content: # 🧠 Brain Teaser Game Skill

[![OpenClaw Skill](https://img.shields.io/badge/OpenClaw-Skill-blue.svg)](https://openclaw.ai)
[![Python 3](https://img.shields.io/badge/Python-3.6+-green.svg)](https://www.python.org/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![ClawHub](https://img.shields.io/badge/ClawHub-Published-purple.svg)](https://clawhub.com)

> 🎮 Multi-language Brain Teaser Interactive Game - OpenClaw Skill

---

## 🇨🇳 中文 | 🇺🇸 English | 🇯🇵 日本語

---

### 🇨🇳 中文

一个支持中文、英文、日语的脑筋急转弯互动游戏 OpenClaw Skill，拥有 600+ 题库。

## ✨ 特性

- 🌍 **多语言支持** - 自动检测用户语言（中文/英文/日语）
- 📚 **600+ 题库** - 每种语言 200 道精选题目
- 🎲 **随机出题** - 智能随机抽取题目
- 💡 **提示系统** - 提供递进式提示帮助思考
- ✅ **智能匹配** - 支持模糊答案匹配
- 🔄 **历史记录** - 做过的题目不会重复出现
- 🤖 **AI 扩展** - 可选的 AI 动态生成新题功能

## 🚀 快速开始

### 安装

#### 方式一：通过 ClawHub 安装（推荐）

```bash
clawhub search brain-teaser-game
clawhub install brain-teaser-game
```

#### 方式二：手动安装

```bash
# 克隆仓库
git clone https://github.com/你的用户名/brain-teaser-game-skill.git

# 复制到 OpenClaw Skills 目录
cp -r brain-teaser-game-skill ~/.openclaw/skills/
```

### 使用方法

```bash
# 开始游戏
./invoke.sh start "来个脑筋急转弯"
```

#### 游戏中操作

| 操作 | 命令 |
|------|------|
| 回答 | 直接输入答案 |
| 提示 | 输入"提示" |
| 答案 | 输入"答案" |
| 下一题 | 输入"下一题" |

## 📖 命令参考

```bash
# 开始新游戏
./invoke.sh start "用户输入"

# 提交答案
./invoke.sh answer <session_id> "你的答案"

# 获取提示
./invoke.sh hint <session_id>

# 查看答案
./invoke.sh reveal <session_id>

# 下一题
./invoke.sh next <session_id>

# 交互模式（自动检测意图）
./invoke.sh interactive <session_id> "提示"
./invoke.sh interactive <session_id> "你的答案"

# 重置历史记录
./invoke.sh reset-history

# 查看状态
./invoke.sh status
```

## 📊 题库统计

| 语言 | 题目数 | 难度分布 |
|------|--------|---------|
| 中文 | 200 | 简单 160 / 中等 40 |
| English | 200 | Easy 160 / Medium 40 |
| 日本語 | 200 | 簡単 160 / 普通 40 |

## 🎮 示例对话

```
用户：来个脑筋急转弯
Skill：## 🧠 脑筋急转弯
       **题目**：什么东西越洗越脏？
       ---
       - 直接回答
       - 输入"提示"获取提示

用户：提示
Skill：**提示**：生活中最常见的液体

用户：水
Skill：✅ 正确！
       **答案**：水
       **解释**：水洗东西会带走污垢，因此越洗越脏。
```

## 🤖 AI 动态生成（可选）

当基础题库用完时，可以配置 AI 自动生成新题目。

```bash
# 环境变量配置
export BRAIN_TEASER_API_KEY=your-api-key
export BRAIN_TEASER_API_BASE=https://api.example.com/v1  # 可选
export BRAIN_TEASER_MODEL=gpt-4  # 可选
```

### 配置读取优先级

1. 环境变量 `BRAIN_TEASER_API_KEY`
2. `~/.claude/settings.json`
3. `~/.openclaw/openclaw.json`

### 支持的 API

- OpenAI API
- 智谱 AI (GLM)
- DeepSeek
- 其他兼容 OpenAI 格式的 API

## 📁 文件结构

```
brain-teaser-game-skill/
├── SKILL.md           # Skill 定义（含 YAML frontmatter）
├── _meta.json         # 元数据配置
├── invoke.sh          # Bash 入口脚本
├── invoke.py          # 核心实现
├── language.py        # 语言检测模块
├── answer.py          # 答案判断模块
├── session.py         # 会话管理模块
├── ai_generator.py    # AI 题目生成器
├── README.md          # 本文件
├── LICENSE            # MIT License
├── .gitignore         # Git 忽略规则
└── data/
    ├── zh.json        # 中文题库 (200题)
    ├── en.json        # 英文题库 (200题)
    └── ja.json        # 日文题库 (200题)
```

## 🔧 依赖

- **Python 3.6+**
- **无外部依赖** - 仅使用 Python 标准库

## 🛠️ 开发

### 运行测试

```bash
# 测试语言检测
python3 language.py

# 测试答案判断
python3 answer.py

# 测试会话管理
python3 session.py
```

### 添加新题目

编辑 `data/{lang}.json` 文件：

```json
{
  "id": 201,
  "question": "问题内容",
  "answer": "答案",
  "hint": "提示",
  "explain": "解释",
  "difficulty": 1
}
```

## 📝 数据存储

- **位置**: `~/.cache/brain-teaser/`
- **会话文件**: `sessions/{session_id}.json`
- **历史记录**: `history.json`

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 创建 Pull Request

---

### 🇺🇸 English

A multi-language brain teaser interactive game OpenClaw Skill supporting Chinese, English, and Japanese with 600+ questions.

## ✨ Features

- 🌍 **Multi-language Support** - Auto-detect user language (Chinese/English/Japanese)
- 📚 **600+ Questions** - 200 curated questions per language
- 🎲 **Random Selection** - Smart random question picking
- 💡 **Hint System** - Progressive hints to help thinking
- ✅ **Smart Matching** - Fuzzy answer matching support
- 🔄 **History Tracking** - No repeated questions
- 🤖 **AI Extension** - Optional AI dynamic question generation

## 🚀 Quick Start

### Installation

#### Option 1: Install via ClawHub (Recommended)

```bash
clawhub search brain-teaser-game
clawhub install brain-teaser-game
```

#### Option 2: Manual Installation

```bash
# Clone repository
git clone https://github.com/your-username/brain-teaser-game-skill.git

# Copy to OpenClaw Skills directory
cp -r brain-teaser-game-skill ~/.openclaw/skills/
```

### Usage

```bash
# Start game
./invoke.sh start "Give me a brain teaser"
```

#### In-Game Operations

| Action | Command |
|--------|---------|
| Answer | Type your answer directly |
| Hint | Type "hint" |
| Reveal Answer | Type "answer" |
| Next Question | Type "next" |

## 📖 Command Reference

```bash
# Start new game
./invoke.sh start "user input"

# Submit answer
./invoke.sh answer <session_id> "your answer"

# Get hint
./invoke.sh hint <session_id>

# Reveal answer
./invoke.sh reveal <session_id>

# Next question
./invoke.sh next <session_id>

# Interactive mode (auto-detect intent)
./invoke.sh interactive <session_id> "hint"
./invoke.sh interactive <session_id> "your answer"

# Reset history
./invoke.sh reset-history

# Check status
./invoke.sh status
```

## 📊 Question Statistics

| Language | Questions | Difficulty |
|----------|-----------|------------|
| 中文 | 200 | Easy 160 / Medium 40 |
| English | 200 | Easy 160 / Medium 40 |
| 日本語 | 200 | Easy 160 / Medium 40 |

## 🎮 Example Conversation

```
User: Give me a brain teaser
Skill: ## 🧠 Brain Teaser
       **Question**: What has keys but can't open locks?
       ---
       - Answer directly
       - Type 'hint' for a hint

User: piano
Skill: ✅ Correct!
       **Answer**: piano
       **Explanation**: A piano has keys but they are for playing music.
```

## 🤖 AI Dynamic Generation (Optional)

Configure AI to auto-generate new questions when the base pool is exhausted.

```bash
# Environment variable configuration
export BRAIN_TEASER_API_KEY=your-api-key
export BRAIN_TEASER_API_BASE=https://api.example.com/v1  # optional
export BRAIN_TEASER_MODEL=gpt-4  # optional
```

### Configuration Priority

1. Environment variable `BRAIN_TEASER_API_KEY`
2. `~/.claude/settings.json`
3. `~/.openclaw/openclaw.json`

### Supported APIs

- OpenAI API
- Zhipu AI (GLM)
- DeepSeek
- Other OpenAI-compatible APIs

## 📁 File Structure

```
brain-teaser-game-skill/
├── SKILL.md           # Skill definition (with YAML frontmatter)
├── _meta.json         # Metadata configuration
├── invoke.sh          # Bash entry script
├── invoke.py          # Core implementation
├── language.py        # Language detection module
├── answer.py          # Answer matching module
├── session.py         # Session management module
├── ai_generator.py    # AI question generator
├── README.md          # This file
├── LICENSE            # MIT License
├── .gitignore         # Git ignore rules
└── data/
    ├── zh.json        # Chinese questions (200)
    ├── en.json        # English questions (200)
    └── ja.json        # Japanese questions (200)
```

## 🔧 Dependencies

- **Python 3.6+**
- **No external dependencies** - Uses only Python standard library

## 🛠️ Development

### Running Tests

```bash
# Test language detection
python3 language.py

# Test answer matching
python3 answer.py

# Test session management
python3 session.py
```

### Adding New Questions

Edit `data/{lang}.json` files:

```json
{
  "id": 201,
  "question": "Question content",
  "answer": "Answer",
  "hint": "Hint",
  "explain": "Explanation",
  "difficulty": 1
}
```

## 📝 Data Storage

- **Location**: `~/.cache/brain-teaser/`
- **Session files**: `sessions/{session_id}.json`
- **History**: `history.json`

## 🤝 Contributing

Issues and Pull Requests are welcome!

1. Fork this repository
2. Create feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Create Pull Request

---

### 🇯🇵 日本語

中国語、英語、日本語に対応したなぞなぞインタラクティブゲーム OpenClaw Skill。600問以上の問題を収録。

## ✨ 機能

- 🌍 **多言語対応** - ユーザーの言語を自動検出（中国語/英語/日本語）
- 📚 **600問以上** - 各言語200問の厳選問題
- 🎲 **ランダム出題** - スマートなランダム問題選択
- 💡 **ヒント機能** - 思考を助ける段階的なヒント
- ✅ **スマートマッチング** - 曖昧な回答にも対応
- 🔄 **履歴管理** - 出題済みの問題は再表示されません
- 🤖 **AI拡張** - オプションのAI動的問題生成機能

## 🚀 はじめに

### インストール

#### 方法1：ClawHub経由でインストール（推奨）

```bash
clawhub search brain-teaser-game
clawhub install brain-teaser-game
```

#### 方法2：手動インストール

```bash
# リポジトリをクローン
git clone https://github.com/your-username/brain-teaser-game-skill.git

# OpenClaw Skillsディレクトリにコピー
cp -r brain-teaser-game-skill ~/.openclaw/skills/
```

### 使い方

```bash
# ゲーム開始
./invoke.sh start "なぞなぞをください"
```

#### ゲーム中の操作

| 操作 | コマンド |
|------|----------|
| 回答 | 答えを直接入力 |
| ヒント | 「ヒント」と入力 |
| 答えを見る | 「答え」と入力 |
| 次の問題 | 「次」と入力 |

## 📖 コマンドリファレンス

```bash
# 新しいゲームを開始
./invoke.sh start "ユーザー入力"

# 回答を送信
./invoke.sh answer <session_id> "あなたの答え"

# ヒントを取得
./invoke.sh hint <session_id>

# 答えを表示
./invoke.sh reveal <session_id>

# 次の問題
./invoke.sh next <session_id>

# インタラクティブモード（意図を自動検出）
./invoke.sh interactive <session_id> "ヒント"
./invoke.sh interactive <session_id> "あなたの答え"

# 履歴をリセット
./invoke.sh reset-history

# ステータス確認
./invoke.sh status
```

## 📊 問題数統計

| 言語 | 問題数 | 難易度 |
|------|--------|--------|
| 中文 | 200 | 簡単 160 / 普通 40 |
| English | 200 | Easy 160 / Medium 40 |
| 日本語 | 200 | 簡単 160 / 普通 40 |

## 🎮 会話例

```
ユーザー：なぞなぞをください
Skill：## 🧠 なぞなぞ
       **問題**：鍵があるのに、鍵を開けられないものは何？
       ---
       - 直接回答
       - 「ヒント」でヒントを取得

ユーザー：ピアノ
Skill：✅ 正解！
       **答え**：ピアノ
       **解説**：ピアノには鍵盤（キー）がありますが、鍵を開けることはできません。
```

## 🤖 AI動的生成（オプション）

基本問題が尽きた場合、AIが自動的に新しい問題を生成するよう設定できます。

```bash
# 環境変数の設定
export BRAIN_TEASER_API_KEY=your-api-key
export BRAIN_TEASER_API_BASE=https://api.example.com/v1  # オプション
export BRAIN_TEASER_MODEL=gpt-4  # オプション
```

### 設定優先順位

1. 環境変数 `BRAIN_TEASER_API_KEY`
2. `~/.claude/settings.json`
3. `~/.openclaw/openclaw.json`

### 対応API

- OpenAI API
- Zhipu AI (GLM)
- DeepSeek
- その他OpenAI互換API

## 📁 ファイル構成

```
brain-teaser-game-skill/
├── SKILL.md           # Skill定義（YAML frontmatter付き）
├── _meta.json         # メタデータ設定
├── invoke.sh          # Bashエントリスクリプト
├── invoke.py          # コア実装
├── language.py        # 言語検出モジュール
├── answer.py          # 回答判定モジュール
├── session.py         # セッション管理モジュール
├── ai_generator.py    # AI問題ジェネレーター
├── README.md          # このファイル
├── LICENSE            # MIT License
├── .gitignore         # Git無視ルール
└── data/
    ├── zh.json        # 中国語問題 (200問)
    ├── en.json        # 英語問題 (200問)
    └── ja.json        # 日本語問題 (200問)
```

## 🔧 依存関係

- **Python 3.6+**
- **外部依存なし** - Python標準ライブラリのみ使用

## 🛠️ 開発

### テスト実行

```bash
# 言語検出テスト
python3 language.py

# 回答判定テスト
python3 answer.py

# セッション管理テスト
python3 session.py
```

### 新しい問題の追加

`data/{lang}.json` ファイルを編集：

```json
{
  "id": 201,
  "question": "問題内容",
  "answer": "答え",
  "hint": "ヒント",
  "explain": "解説",
  "difficulty": 1
}
```

## 📝 データ保存

- **場所**: `~/.cache/brain-teaser/`
- **セッションファイル**: `sessions/{session_id}.json`
- **履歴**: `history.json`

## 🤝 貢献

Issue や Pull Request をお待ちしています！

1. このリポジトリをフォーク
2. 機能ブランチを作成 (`git checkout -b feature/amazing-feature`)
3. 変更をコミット (`git commit -m 'Add amazing feature'`)
4. ブランチにプッシュ (`git push origin feature/amazing-feature`)
5. Pull Request を作成

---

## 📄 License

[MIT License](LICENSE)

## 🔗 Links

- [OpenClaw](https://openclaw.ai)
- [ClawHub](https://clawhub.com)
- [OpenClaw Docs](https://docs.openclaw.ai)

---

Made with ❤️ for OpenClaw


path: language.py
content: #!/usr/bin/env python3
"""
语言检测模块
根据用户输入文本自动检测语言（中文/英文/日语）
"""

import re
from typing import Literal

Language = Literal["zh", "en", "ja"]


def detect_language(text: str) -> Language:
    """
    检测文本语言

    规则：
    - 包含中文字符（排除日文汉字） → zh
    - 包含日文假名 → ja
    - 其他 → en

    Args:
        text: 用户输入的文本

    Returns:
        语言代码："zh", "en", "ja"
    """
    if not text:
        return "zh"  # 默认中文

    # 日文假名检测（平假名和片假名）
    # 平假名: U+3040-U+309F
    # 片假名: U+30A0-U+30FF
    if re.search(r'[\u3040-\u309F\u30A0-\u30FF]', text):
        return "ja"

    # 中文字符检测（CJK 统一汉字）
    # 注意：日文也使用汉字，所以要放在假名检测之后
    chinese_pattern = r'[\u4E00-\u9FFF]'
    if re.search(chinese_pattern, text):
        return "zh"

    # 默认英文
    return "en"


def get_language_name(lang: Language) -> str:
    """获取语言显示名称"""
    names = {
        "zh": "中文",
        "en": "English",
        "ja": "日本語"
    }
    return names.get(lang, "中文")


def get_response_language(text: str) -> Language:
    """
    根据用户输入确定回复语言
    与 detect_language 相同，但语义更清晰

    Args:
        text: 用户输入

    Returns:
        语言代码
    """
    return detect_language(text)


if __name__ == "__main__":
    # 测试用例
    test_cases = [
        ("来个脑筋急转弯", "zh"),
        ("Give me a brain teaser", "en"),
        ("なぞなぞをください", "ja"),
        ("脳トレしたい", "ja"),
        ("我想玩个游戏", "zh"),
        ("Hello 你好", "zh"),  # 包含中文
        ("こんにちは世界", "ja"),  # 包含假名
        ("", "zh"),  # 空字符串默认中文
    ]

    for text, expected in test_cases:
        result = detect_language(text)
        status = "✓" if result == expected else "✗"
        print(f"{status} '{text}' -> {result} (expected: {expected})")


path: invoke.py
content: #!/usr/bin/env python3
"""
脑筋急转弯 Skill - 主程序入口

用法：
    python invoke.py start "来个脑筋急转弯"
    python invoke.py answer {session_id} "水"
    python invoke.py hint {session_id}
    python invoke.py reveal {session_id}
    python invoke.py next {session_id}
    python invoke.py reset-history
"""

import argparse
import json
import random
import sys
from pathlib import Path
from typing import Optional, List

from language import detect_language, get_response_language, Language
from answer import check_answer, extract_answer
from session import Session, SessionManager, HistoryManager, Question
from ai_generator import AIQuestionGenerator


# 获取数据目录
DATA_DIR = Path(__file__).parent / "data"


def load_questions(language: str) -> List[Question]:
    """加载题库"""
    lang_file = DATA_DIR / f"{language}.json"

    if not lang_file.exists():
        # 回退到中文
        lang_file = DATA_DIR / "zh.json"

    with open(lang_file, 'r', encoding='utf-8') as f:
        data = json.load(f)

    return [Question(**item) for item in data]


def get_random_question(language: str, session_manager: SessionManager, history_manager: HistoryManager) -> Optional[Question]:
    """
    获取随机题目（排除已使用的）

    Args:
        language: 语言代码
        session_manager: 会话管理器
        history_manager: 历史记录管理器

    Returns:
        题目或 None
    """
    # 加载题库
    questions = load_questions(language)

    # 获取未使用的题目
    unused = history_manager.get_unused_questions(language, questions)

    # 检查是否需要 AI 生成新题
    ai_generator = AIQuestionGenerator()
    if ai_generator.should_generate_new(len(unused), threshold=5):
        new_question = ai_generator.generate_question(language)
        if new_question:
            # 添加到历史记录
            history_manager.add_generated_question(new_question, language)
            return new_question

    # 如果没有未使用的题目，重置历史
    if not unused:
        history_manager.reset_history(language)
        unused = questions

    # 随机选择
    return random.choice(unused)


def format_response(session: Session, question: Optional[Question] = None, message: str = "", show_hint: bool = False, show_answer: bool = False) -> str:
    """
    格式化 Markdown 响应

    Args:
        session: 会话
        question: 当前题目
        message: 附加消息
        show_hint: 是否显示提示
        show_answer: 是否显示答案

    Returns:
        Markdown 格式的响应
    """
    # 语言相关的文本
    texts = {
        "zh": {
            "title": "## 🧠 脑筋急转弯",
            "question": "**题目**",
            "hint_label": "**提示**",
            "answer_label": "**答案**",
            "explain_label": "**解释**",
            "stats": "已答 {answered} 题，正确 {correct} 题",
            "actions": ["直接回答", "输入\"提示\"获取提示", "输入\"答案\"查看答案", "输入\"下一题\"换一题"],
            "session_info": "会话ID: `{session_id}`"
        },
        "en": {
            "title": "## 🧠 Brain Teaser",
            "question": "**Question**",
            "hint_label": "**Hint**",
            "answer_label": "**Answer**",
            "explain_label": "**Explanation**",
            "stats": "Answered: {answered}, Correct: {correct}",
            "actions": ["Answer directly", "Type 'hint' for a hint", "Type 'answer' to reveal", "Type 'next' for new question"],
            "session_info": "Session ID: `{session_id}`"
        },
        "ja": {
            "title": "## 🧠 なぞなぞ",
            "question": "**問題**",
            "hint_label": "**ヒント**",
            "answer_label": "**答え**",
            "explain_label": "**解説**",
            "stats": "{answered}問中{correct}問正解",
            "actions": ["直接答える", "「ヒント」と入力", "「答え」と入力", "「次」と入力"],
            "session_info": "セッションID: `{session_id}`"
        }
    }

    t = texts.get(session.language, texts["zh"])
    lines = []

    # 标题
    lines.append(t["title"])
    lines.append("")

    # 消息
    if message:
        lines.append(message)
        lines.append("")

    # 题目
    if question:
        lines.append(f"{t['question']}：{question.question}")
        lines.append("")

        # 提示
        if show_hint and question.hint:
            lines.append(f"{t['hint_label']}：{question.hint}")
            lines.append("")

        # 答案
        if show_answer:
            lines.append(f"{t['answer_label']}：{question.answer}")
            if question.explain:
                lines.append(f"{t['explain_label']}：{question.explain}")
            lines.append("")

    # 分隔线
    lines.append("---")

    # 操作提示（仅在未显示答案时）
    if not show_answer:
        actions_text = "\n".join([f"- {action}" for action in t["actions"]])
        lines.append(actions_text)

    # 统计信息
    if session.questions_answered > 0:
        stats = t["stats"].format(answered=session.questions_answered, correct=session.correct_answers)
        lines.append("")
        lines.append(f"*{stats}*")

    # 会话ID
    lines.append("")
    lines.append(t["session_info"].format(session_id=session.session_id))

    return "\n".join(lines)


def cmd_start(user_input: str) -> str:
    """
    开始新游戏

    Args:
        user_input: 用户输入

    Returns:
        Markdown 响应
    """
    # 检测语言
    language = detect_language(user_input)

    # 创建会话
    session_manager = SessionManager()
    history_manager = HistoryManager()

    session = session_manager.create_session(language)

    # 获取第一道题
    question = get_random_question(language, session_manager, history_manager)

    if not question:
        return "题库加载失败，请稍后重试。"

    # 更新会话
    session.current_question = question
    session_manager.update_session(session)

    # 标记题目已使用
    history_manager.mark_question_used(question.id, language)

    return format_response(session, question)


def cmd_answer(session_id: str, user_answer: str) -> str:
    """
    提交答案

    Args:
        session_id: 会话ID
        user_answer: 用户答案

    Returns:
        Markdown 响应
    """
    session_manager = SessionManager()
    history_manager = HistoryManager()

    session = session_manager.get_session(session_id)
    if not session:
        return "会话不存在或已过期，请重新开始游戏。"

    if not session.current_question:
        return "当前没有题目，请获取下一题。"

    # 检查答案
    is_correct, feedback = check_answer(
        user_answer,
        session.current_question.answer,
        session.language
    )

    # 更新统计
    session.questions_answered += 1
    if is_correct:
        session.correct_answers += 1

    session_manager.update_session(session)

    # 构建响应
    if is_correct:
        message = f"✅ {feedback}\n\n**{session.current_question.answer}**"
        if session.current_question.explain:
            message += f"\n\n{session.current_question.explain}"
    else:
        message = f"❌ {feedback}"

    return format_response(session, session.current_question, message, show_answer=is_correct)


def cmd_hint(session_id: str) -> str:
    """
    获取提示

    Args:
        session_id: 会话ID

    Returns:
        Markdown 响应
    """
    session_manager = SessionManager()

    session = session_manager.get_session(session_id)
    if not session:
        return "会话不存在或已过期，请重新开始游戏。"

    if not session.current_question:
        return "当前没有题目，请获取下一题。"

    # 更新提示计数
    session.hints_shown += 1
    session_manager.update_session(session)

    return format_response(session, session.current_question, show_hint=True)


def cmd_reveal(session_id: str) -> str:
    """
    查看答案

    Args:
        session_id: 会话ID

    Returns:
        Markdown 响应
    """
    session_manager = SessionManager()

    session = session_manager.get_session(session_id)
    if not session:
        return "会话不存在或已过期，请重新开始游戏。"

    if not session.current_question:
        return "当前没有题目，请获取下一题。"

    return format_response(session, session.current_question, show_answer=True)


def cmd_next(session_id: str) -> str:
    """
    下一题

    Args:
        session_id: 会话ID

    Returns:
        Markdown 响应
    """
    session_manager = SessionManager()
    history_manager = HistoryManager()

    session = session_manager.get_session(session_id)
    if not session:
        return "会话不存在或已过期，请重新开始游戏。"

    # 获取新题目
    question = get_random_question(session.language, session_manager, history_manager)

    if not question:
        return "题库加载失败，请稍后重试。"

    # 更新会话
    session.current_question = question
    session.hints_shown = 0
    session_manager.update_session(session)

    # 标记题目已使用
    history_manager.mark_question_used(question.id, session.language)

    # 语言相关的消息
    messages = {
        "zh": "📝 下一题来了！",
        "en": "📝 Here's the next one!",
        "ja": "📝 次の問題です！"
    }
    message = messages.get(session.language, messages["zh"])

    return format_response(session, question, message)


def cmd_reset_history(language: Optional[str] = None) -> str:
    """
    重置历史记录

    Args:
        language: 指定语言或 None（全部重置）

    Returns:
        响应消息
    """
    history_manager = HistoryManager()
    history_manager.reset_history(language)

    if language:
        return f"已重置 {language} 语言的历史记录，所有题目都可以重新出现了！"
    else:
        return "已重置所有历史记录，所有题目都可以重新出现了！"


def cmd_status(session_id: Optional[str] = None) -> str:
    """
    显示状态

    Args:
        session_id: 会话ID（可选）

    Returns:
        状态信息
    """
    history_manager = HistoryManager()

    lines = ["## 📊 游戏状态", ""]

    # 各语言历史记录
    for lang in ["zh", "en", "ja"]:
        used_ids = history_manager.get_used_ids(lang)
        lines.append(f"- **{lang.upper()}**: 已使用 {len(used_ids)} 题")

    # 当前会话
    if session_id:
        session_manager = SessionManager()
        session = session_manager.get_session(session_id)
        if session:
            lines.append("")
            lines.append(f"**当前会话**: `{session.session_id}`")
            lines.append(f"- 语言: {session.language}")
            lines.append(f"- 已答题数: {session.questions_answered}")
            lines.append(f"- 正确数: {session.correct_answers}")

    return "\n".join(lines)


def detect_intent(text: str, language: str) -> str:
    """
    检测用户意图

    Args:
        text: 用户输入
        language: 语言代码

    Returns:
        意图: "hint", "reveal", "next", "answer"
    """
    text_lower = text.lower().strip()

    # 中文关键词
    zh_hints = ["提示", "给个提示", "提示一下", "什么提示"]
    zh_reveal = ["答案", "查看答案", "告诉我答案", "公布答案", "是什么"]
    zh_next = ["下一题", "下一道", "换题", "换一题", "再来一题", "下一个"]

    # 英文关键词
    en_hints = ["hint", "give me a hint", "clue"]
    en_reveal = ["answer", "reveal", "show answer", "what's the answer", "solution"]
    en_next = ["next", "next question", "another", "new one"]

    # 日文关键词
    ja_hints = ["ヒント", "ヒントを", "ヒントください"]
    ja_reveal = ["答え", "正解", "答えを教えて", "答えは"]
    ja_next = ["次", "次の問題", "次の質問", "次の"]

    if language == "zh":
        if any(kw in text_lower for kw in zh_hints):
            return "hint"
        if any(kw in text_lower for kw in zh_reveal):
            return "reveal"
        if any(kw in text_lower for kw in zh_next):
            return "next"
    elif language == "en":
        if any(kw in text_lower for kw in en_hints):
            return "hint"
        if any(kw in text_lower for kw in en_reveal):
            return "reveal"
        if any(kw in text_lower for kw in en_next):
            return "next"
    elif language == "ja":
        if any(kw in text_lower for kw in ja_hints):
            return "hint"
        if any(kw in text_lower for kw in ja_reveal):
            return "reveal"
        if any(kw in text_lower for kw in ja_next):
            return "next"

    return "answer"


def main():
    """主函数"""
    parser = argparse.ArgumentParser(description="脑筋急转弯 Skill")
    subparsers = parser.add_subparsers(dest="command", help="命令")

    # start 命令
    start_parser = subparsers.add_parser("start", help="开始新游戏")
    start_parser.add_argument("input", nargs="*", help="用户输入")

    # answer 命令
    answer_parser = subparsers.add_parser("answer", help="提交答案")
    answer_parser.add_argument("session_id", help="会话ID")
    answer_parser.add_argument("answer", nargs="*", help="答案")

    # hint 命令
    hint_parser = subparsers.add_parser("hint", help="获取提示")
    hint_parser.add_argument("session_id", help="会话ID")

    # reveal 命令
    reveal_parser = subparsers.add_parser("reveal", help="查看答案")
    reveal_parser.add_argument("session_id", help="会话ID")

    # next 命令
    next_parser = subparsers.add_parser("next", help="下一题")
    next_parser.add_argument("session_id", help="会话ID")

    # reset-history 命令
    reset_parser = subparsers.add_parser("reset-history", help="重置历史记录")
    reset_parser.add_argument("--lang", help="指定语言")

    # status 命令
    status_parser = subparsers.add_parser("status", help="查看状态")
    status_parser.add_argument("session_id", nargs="?", help="会话ID（可选）")

    # interactive 命令（交互模式）
    interactive_parser = subparsers.add_parser("interactive", help="交互模式")
    interactive_parser.add_argument("session_id", help="会话ID")
    interactive_parser.add_argument("input", nargs="*", help="用户输入")

    args = parser.parse_args()

    if args.command == "start":
        user_input = " ".join(args.input) if args.input else "脑筋急转弯"
        print(cmd_start(user_input))

    elif args.command == "answer":
        answer_text = " ".join(args.answer) if args.answer else ""
        print(cmd_answer(args.session_id, answer_text))

    elif args.command == "hint":
        print(cmd_hint(args.session_id))

    elif args.command == "reveal":
        print(cmd_reveal(args.session_id))

    elif args.command == "next":
        print(cmd_next(args.session_id))

    elif args.command == "reset-history":
        print(cmd_reset_history(args.lang))

    elif args.command == "status":
        print(cmd_status(args.session_id))

    elif args.command == "interactive":
        # 交互模式：自动检测意图
        session_manager = SessionManager()
        session = session_manager.get_session(args.session_id)

        if not session:
            print("会话不存在或已过期，请重新开始游戏。")
            return

        user_input = " ".join(args.input) if args.input else ""
        intent = detect_intent(user_input, session.language)

        if intent == "hint":
            print(cmd_hint(args.session_id))
        elif intent == "reveal":
            print(cmd_reveal(args.session_id))
        elif intent == "next":
            print(cmd_next(args.session_id))
        else:
            print(cmd_answer(args.session_id, user_input))

    else:
        parser.print_help()
        sys.exit(1)


if __name__ == "__main__":
    main()


path: ai_generator.py
content: #!/usr/bin/env python3
"""
AI 题目生成器模块
调用 LLM API 生成新的脑筋急转弯题目
"""

import json
import os
import random
import time
from typing import Optional, Dict, Any
from pathlib import Path

from session import Question


# 生成 Prompt 模板
GENERATE_PROMPT = {
    "zh": """请生成一道有趣的脑筋急转弯题目，以 JSON 格式返回，不要包含其他内容。

要求：
1. 题目要有趣、有创意
2. 答案要简洁（通常是1-3个字）
3. 提示要能帮助思考但不要太明显
4. 难度适中

JSON 格式：
{"question": "题目内容", "answer": "答案", "hint": "提示", "explain": "解释"}

现在请生成一道中文脑筋急转弯：""",

    "en": """Generate a fun brain teaser in JSON format. Return only the JSON, no other content.

Requirements:
1. Creative and interesting question
2. Short answer (1-3 words)
3. Helpful but not too obvious hint
4. Medium difficulty

JSON format:
{"question": "...", "answer": "...", "hint": "...", "explain": "..."}

Now generate an English brain teaser:""",

    "ja": """なぞなぞを一つ作ってください。JSONフォーマットのみで返してください。

要件：
1. 面白くて創造的な問題
2. 答えは短く（1-3文字）
3. ヒントは役に立つが、あまり明白すぎない
4. 難易度は中程度

JSONフォーマット：
{"question": "...", "answer": "...", "hint": "...", "explain": "..."}

なぞなぞを生成してください："""
}


class AIQuestionGenerator:
    """AI 题目生成器"""

    def __init__(self):
        self.config = self._load_config()
        self.client = None

        if self.config:
            self._init_client()

    def _load_config(self) -> Optional[Dict[str, str]]:
        """
        加载 API 配置

        优先级：
        1. 环境变量 BRAIN_TEASER_API_KEY
        2. Claude Code 配置 ~/.claude/settings.json
        3. OpenClaw 配置 ~/.openclaw/openclaw.json

        Returns:
            API 配置字典或 None
        """
        # 1. 环境变量优先
        if os.environ.get('BRAIN_TEASER_API_KEY'):
            return {
                'api_key': os.environ['BRAIN_TEASER_API_KEY'],
                'base_url': os.environ.get('BRAIN_TEASER_API_BASE'),
                'model': os.environ.get('BRAIN_TEASER_MODEL', 'glm-4-flash')
            }

        # 2. 读取 Claude Code 配置（智谱 AI）
        claude_settings_path = Path.home() / ".claude" / "settings.json"
        if claude_settings_path.exists():
            try:
                with open(claude_settings_path, 'r', encoding='utf-8') as f:
                    settings = json.load(f)

                env = settings.get('env', {})
                if env.get('ANTHROPIC_AUTH_TOKEN'):
                    return {
                        'api_key': env['ANTHROPIC_AUTH_TOKEN'],
                        'base_url': env.get('ANTHROPIC_BASE_URL'),
                        'model': env.get('ANTHROPIC_MODEL', 'glm-4-flash')
                    }
            except (json.JSONDecodeError, KeyError):
                pass

        # 3. 读取 OpenClaw 配置
        openclaw_path = Path.home() / ".openclaw" / "openclaw.json"
        if openclaw_path.exists():
            try:
                with open(openclaw_path, 'r', encoding='utf-8') as f:
                    config = json.load(f)

                # 检查 gateway 配置
                gateway = config.get('gateway', {})
                if gateway.get('port'):
                    return {
                        'api_key': 'local',
                        'base_url': f"http://localhost:{gateway['port']}",
                        'model': 'glm-4-flash'
                    }
            except (json.JSONDecodeError, KeyError):
                pass

        # 无配置，禁用 AI 生成
        return None

    def _init_client(self):
        """初始化 API 客户端"""
        try:
            # 尝试使用 openai 库（兼容大多数 API）
            from openai import OpenAI

            self.client = OpenAI(
                [REDACTED_SECRET]'api_key'],
                base_url=self.config['base_url']
            )
        except ImportError:
            # openai 库未安装
            self.client = None

    def is_available(self) -> bool:
        """检查 AI 生成器是否可用"""
        return self.config is not None and self.client is not None

    def generate_question(self, language: str) -> Optional[Question]:
        """
        生成新题目

        Args:
            language: 语言代码

        Returns:
            生成的题目或 None
        """
        if not self.is_available():
            return None

        prompt = GENERATE_PROMPT.get(language, GENERATE_PROMPT["en"])

        try:
            response = self.client.chat.completions.create(
                model=self.config['model'],
                messages=[{"role": "user", "content": prompt}],
                temperature=0.9,  # 更高的温度增加创意
                max_tokens=500
            )

            content = response.choices[0].message.content.strip()

            # 尝试解析 JSON
            # 处理可能的 markdown 代码块
            if content.startswith("```"):
                lines = content.split("\n")
                content = "\n".join(lines[1:-1] if lines[-1] == "```" else lines[1:])

            data = json.loads(content)

            # 生成唯一 ID（AI 生成的题目 ID 从 10000 开始）
            question_id = int(time.time() * 1000) % 10000000 + 10000

            return Question(
                id=question_id,
                question=data.get("question", ""),
                answer=data.get("answer", ""),
                hint=data.get("hint", ""),
                explain=data.get("explain", ""),
                difficulty=2,
                source="ai_generated"
            )

        except Exception as e:
            print(f"AI 生成失败: {e}")
            return None

    def should_generate_new(self, unused_count: int, threshold: int = 5) -> bool:
        """
        判断是否需要生成新题

        Args:
            unused_count: 未使用题目数量
            threshold: 阈值

        Returns:
            是否需要生成
        """
        return self.is_available() and unused_count < threshold


def generate_question_simple(language: str) -> Optional[Question]:
    """
    简单的题目生成函数（不依赖类实例）

    Args:
        language: 语言代码

    Returns:
        生成的题目或 None
    """
    generator = AIQuestionGenerator()
    return generator.generate_question(language)


if __name__ == "__main__":
    # 测试 AI 生成器
    print("=== AI 生成器测试 ===")

    generator = AIQuestionGenerator()

    if generator.is_available():
        print(f"API 配置: {generator.config}")
        print(f"可用模型: {generator.config.get('model')}")

        # 尝试生成
        print("\n正在生成中文题目...")
        question = generator.generate_question("zh")
        if question:
            print(f"题目: {question.question}")
            print(f"答案: {question.answer}")
            print(f"提示: {question.hint}")
            print(f"解释: {question.explain}")
        else:
            print("生成失败")
    else:
        print("AI 生成器不可用")
        print("请设置环境变量 BRAIN_TEASER_API_KEY 或配置 ~/.claude/settings.json")


path: data/zh.json
content: id: 1
question: 什么东西越洗越脏？
answer: 水
hint: 生活中最常见的液体
explain: 水洗东西会带走污垢，因此越洗越脏。
difficulty: 1

id: 2
question: 什么东西有头没有脚？
answer: 硬币
hint: 钱的一种
explain: 硬币有正面也叫头，但没有脚。
difficulty: 1

id: 3
question: 什么车没有轮子？
answer: 风车
hint: 靠风力转动的
explain: 风车虽然叫车，但没有轮子，靠风力转动。
difficulty: 1

id: 4
question: 什么路不能走？
answer: 电路
hint: 和电有关
explain: 电路是电流通过的路径，人不能在上面走。
difficulty: 1

id: 5
question: 什么门没有锁？
answer: 球门
hint: 运动场上的
explain: 球门是足球场上的门，没有锁。
difficulty: 1

id: 6
question: 两个人同时掉进水里，为什么只有一个头发湿了？
answer: 另一个是光头
hint: 想想头发的区别
explain: 因为另一个人是光头，没有头发可以湿。
difficulty: 1

id: 7
question: 什么东西越擦越小？
answer: 橡皮
hint: 文具用品
explain: 橡皮擦东西会磨损，所以越擦越小。
difficulty: 1

id: 8
question: 什么桶永远装不满？
answer: 马桶
hint: 卫生间里的
explain: 马桶用完就冲水，永远装不满。
difficulty: 1

id: 9
question: 什么桥不能过？
answer: 鼻梁
hint: 身体的一部分
explain: 鼻梁虽然叫桥，但不是给人过的。
difficulty: 1

id: 10
question: 什么花不能闻？
answer: 烟花
hint: 节日里放的
explain: 烟花是看的不用闻，而且很危险。
difficulty: 1

id: 11
question: 什么书没有字？
answer: 秘书
hint: 一种职业
explain: 秘书是人不是书，所以没有字。
difficulty: 1

id: 12
question: 什么帽不能戴？
answer: 螺帽
hint: 工具的一部分
explain: 螺帽是螺丝的一部分，不能戴在头上。
difficulty: 1

id: 13
question: 什么东西越热越爱出来？
answer: 汗
hint: 身体分泌的
explain: 天气越热，人就越容易出汗。
difficulty: 1

id: 14
question: 什么灯不会亮？
answer: 黑灯
hint: 一种状态
explain: 黑灯表示不亮的状态。
difficulty: 2

id: 15
question: 什么人一年只工作一天？
answer: 圣诞老人
hint: 西方节日人物
explain: 圣诞老人只在圣诞节送礼物。
difficulty: 1

id: 16
question: 什么话世界通用？
answer: 电话
hint: 通讯工具
explain: 电话在世界各地都能用。
difficulty: 2

id: 17
question: 什么东西是你的，但别人用的比你多？
answer: 名字
hint: 别人怎么称呼你
explain: 你的名字别人叫的次数比你说的多。
difficulty: 1

id: 18
question: 什么球不能踢？
answer: 地球
hint: 我们生活的星球
explain: 地球虽然叫球，但太大踢不动。
difficulty: 1

id: 19
question: 什么床不能睡？
answer: 河床
hint: 和河流有关
explain: 河床是河流的底部，不是睡觉的地方。
difficulty: 1

id: 20
question: 什么鱼不能吃？
answer: 木鱼
hint: 寺庙里用的
explain: 木鱼是打击乐器，不能吃。
difficulty: 1

id: 21
question: 什么鸡没有翅膀？
answer: 田鸡
hint: 一种动物
explain: 田鸡是青蛙，不是鸡，没有翅膀。
difficulty: 1

id: 22
question: 什么人永远不脱发？
answer: 和尚
hint: 一种职业
explain: 和尚剃光头，不存在脱发问题。
difficulty: 1

id: 23
question: 什么人每天靠运气赚钱？
answer: 送煤气的人
hint: 送什么东西的
explain: 送煤气的人送的是煤气。
difficulty: 2

id: 24
question: 什么人不怕冷？
answer: 雪人
hint: 冬天才能见到
explain: 雪人本身就是雪做的，当然不怕冷。
difficulty: 1

id: 25
question: 什么东西越分越多？
answer: 快乐
hint: 一种情绪
explain: 快乐分享给更多人，就会越来越多。
difficulty: 2

id: 26
question: 什么马不吃草？
answer: 木马
hint: 游乐场有，电脑也有
explain: 木马不是真马，当然不吃草。
difficulty: 1

id: 27
question: 什么刀不能切菜？
answer: 剪刀
hint: 另一种工具
explain: 剪刀虽然有刀字，但不能像菜刀一样切菜。
difficulty: 2

id: 28
question: 什么地方每天都有很多人进出，但从不收门票？
answer: 厕所
hint: 每个人都要去
explain: 公厕人人都能用，不需要门票。
difficulty: 1

id: 29
question: 什么字人人都会说错？
answer: 错
hint: 想想这个字本身
explain: 说错这个字的时候，就是在说错。
difficulty: 2

id: 30
question: 什么饭不能吃？
answer: 当事人
hint: 和事情有关的人
explain: 当事人是人不是饭。
difficulty: 2

id: 31
question: 什么东西嘴里没有舌头？
answer: 茶壶嘴
hint: 倒水用的
explain: 茶壶嘴只是个出口，没有舌头。
difficulty: 1

id: 32
question: 什么书在书店买不到？
answer: 遗书
hint: 人去世后留下的
explain: 遗书不是公开销售的书籍。
difficulty: 1

id: 33
question: 什么东西不用手就能抓住？
answer: 注意力
hint: 和眼睛有关
explain: 我们常说吸引注意力，但不用手抓。
difficulty: 2

id: 34
question: 什么牛不会吃草？
answer: 蜗牛
hint: 爬得很慢的
explain: 蜗牛虽然名字里有牛，但它不是牛。
difficulty: 1

id: 35
question: 什么人没有心脏？
answer: 稻草人
hint: 田野里的
explain: 稻草人是假人，没有心脏。
difficulty: 1

id: 36
question: 什么东西越长越短？
answer: 蜡烛
hint: 生日蛋糕上有
explain: 蜡烛燃烧时间越长，蜡烛就越短。
difficulty: 1

id: 37
question: 什么人最喜欢帮助别人？
answer: 雷锋
hint: 一位英雄
explain: 雷锋以助人为乐著称。
difficulty: 1

id: 38
question: 什么东西越用越有？
answer: 知识
hint: 学习得来的
explain: 知识越用越熟练，越分享越丰富。
difficulty: 2

id: 39
question: 什么锁没有孔？
answer: 枷锁
hint: 比喻性的束缚
explain: 枷锁是一种刑具，不是普通的锁。
difficulty: 2

id: 40
question: 什么东西天越热爬得越高？
answer: 温度计
hint: 测量温度的
explain: 温度越高，温度计里的水银柱越高。
difficulty: 1

id: 41
question: 什么水不能喝？
answer: 薪水
hint: 工作收入
explain: 薪水是工资，不是真的水。
difficulty: 1

id: 42
question: 什么东西越剪越大？
answer: 洞
hint: 衣服上的
explain: 洞越剪越大，因为边缘被去掉了。
difficulty: 1

id: 43
question: 什么东西越生气，它就越大？
answer: 脾气
hint: 情绪的一种
explain: 脾气越大，说明越生气。
difficulty: 2

id: 44
question: 什么飞机没有机翼？
answer: 直升机
hint: 可以垂直起飞
explain: 直升机用旋翼，没有固定机翼。
difficulty: 1

id: 45
question: 什么伞不能挡雨？
answer: 降落伞
hint: 从天上下来用的
explain: 降落伞是减速用的，不是挡雨的。
difficulty: 1

id: 46
question: 什么狗不会叫？
answer: 热狗
hint: 一种食物
explain: 热狗是食物，不是真的狗。
difficulty: 1

id: 47
question: 什么东西越老越值钱？
answer: 古董
hint: 收藏品
explain: 古董年代越久远，价值越高。
difficulty: 1

id: 48
question: 什么东西晚上才会出来？
answer: 星星
hint: 天上的
explain: 星星白天也在，只是太阳太亮看不见。
difficulty: 1

id: 49
question: 什么人最不怕热？
answer: 厨师
hint: 和火打交道
explain: 厨师天天在火边工作，早就习惯了。
difficulty: 1

id: 50
question: 什么东西越洗越轻？
answer: 肥皂
hint: 洗衣服用的
explain: 肥皂越洗越小，自然越轻。
difficulty: 1

id: 51
question: 什么锅不能做饭？
answer: 火锅
hint: 一种吃法
explain: 火锅是一种餐饮方式，不是普通的锅。
difficulty: 1

id: 52
question: 什么东西越热越爱哭？
answer: 冰
hint: 冷的东西
explain: 冰受热会融化成水，像在哭一样。
difficulty: 1

id: 53
question: 什么笔不能写字？
answer: 电笔
hint: 电工用的
explain: 电笔是测试电路的，不是写字的。
difficulty: 1

id: 54
question: 什么羊不能吃草？
answer: 洋娃娃
hint: 玩具
explain: 洋娃娃的洋不是羊。
difficulty: 2

id: 55
question: 什么东西越黑越亮？
answer: 黑板
hint: 教室里有
explain: 黑板本身就是黑的，写上白字就亮了。
difficulty: 1

id: 56
question: 什么蛋不能吃？
answer: 笨蛋
hint: 骂人的话
explain: 笨蛋是指人笨，不是蛋。
difficulty: 1

id: 57
question: 什么河没有水？
answer: 银河
hint: 天上的
explain: 银河是星星组成的，没有真正的水。
difficulty: 1

id: 58
question: 什么海没有水？
answer: 火海
hint: 形容火灾
explain: 火海形容火很大，不是真的海。
difficulty: 1

id: 59
question: 什么枪不会伤人？
answer: 水枪
hint: 夏天玩水用的
explain: 水枪喷的是水，不会伤人。
difficulty: 1

id: 60
question: 什么网不捕鱼？
answer: 蜘蛛网
hint: 昆虫做的
explain: 蜘蛛网是蜘蛛捕虫用的，不是捕鱼。
difficulty: 1

id: 61
question: 什么头不能理发？
answer: 石头
hint: 硬的东西
explain: 石头没有头发，不能理发。
difficulty: 1

id: 62
question: 什么人不用吃饭？
answer: 机器人
hint: 人造的
explain: 机器人用电不用吃饭。
difficulty: 1

id: 63
question: 什么东西越破越有用？
answer: 破绽
hint: 发现问题时
explain: 发现破绽才能解决问题。
difficulty: 2

id: 64
question: 什么山不能爬？
answer: 假山
hint: 园林里的
explain: 假山是装饰用的，不是真山。
difficulty: 1

id: 65
question: 什么狼不吃羊？
answer: 黄鼠狼
hint: 一种小动物
explain: 黄鼠狼名字有狼，但不是狼。
difficulty: 1

id: 66
question: 什么布剪不断？
answer: 瀑布
hint: 水做的
explain: 瀑布是水流，不是布。
difficulty: 1

id: 67
question: 什么池没有水？
answer: 电池
hint: 电子产品用的
explain: 电池是供电的，不是蓄水的。
difficulty: 1

id: 68
question: 什么镜不能照人？
answer: 显微镜
hint: 实验室用的
explain: 显微镜是看微小东西的，不是照人的。
difficulty: 1

id: 69
question: 什么带不能系？
answer: 海带
hint: 吃的
explain: 海带是一种食物，不是带子。
difficulty: 1

id: 70
question: 什么管不能流水？
answer: 血管
hint: 身体里的
explain: 血管流的是血不是水。
difficulty: 1

id: 71
question: 什么纸买不到？
answer: 结婚纸
hint: 领证才有
explain: 结婚证是领的，不是买的。
difficulty: 1

id: 72
question: 什么牛不耕田？
answer: 蜗牛
hint: 爬得慢
explain: 蜗牛不是牛，不能耕田。
difficulty: 1

id: 73
question: 什么鸟不会飞？
answer: 鸵鸟
hint: 跑得很快
explain: 鸵鸟体型大，飞不起来。
difficulty: 1

id: 74
question: 什么猫不捉老鼠？
answer: 熊猫
hint: 国宝
explain: 熊猫吃竹子，不捉老鼠。
difficulty: 1

id: 75
question: 什么熊不吃蜂蜜？
answer: 北极熊
hint: 住在北极
explain: 北极熊住在北极，吃鱼不吃蜂蜜。
difficulty: 1

id: 76
question: 什么虎不吃肉？
answer: 壁虎
hint: 墙上的小动物
explain: 壁虎吃虫子，不是虎。
difficulty: 1

id: 77
question: 什么猪不长肉？
answer: 蜘蛛
hint: 织网的
explain: 蜘蛛不是猪。
difficulty: 2

id: 78
question: 什么龙不会飞？
answer: 恐龙
hint: 已经灭绝
explain: 大多数恐龙不会飞。
difficulty: 1

id: 79
question: 什么象不能骑？
answer: 象棋里的象
hint: 棋盘上的
explain: 象棋的象是棋子，不能骑。
difficulty: 1

id: 80
question: 什么马不会跑？
answer: 木马
hint: 玩具
explain: 木马是玩具，不会跑。
difficulty: 1

id: 81
question: 什么鱼不会游泳？
answer: 木鱼
hint: 寺庙里的
explain: 木鱼是乐器，不是鱼。
difficulty: 1

id: 82
question: 什么狗不会叫？
answer: 热狗
hint: 吃的
explain: 热狗是食物，不是狗。
difficulty: 1

id: 83
question: 什么鸡没有毛？
answer: 飞机
hint: 天上的
explain: 飞机的机不是鸡。
difficulty: 1

id: 84
question: 什么鸭不会下水？
answer: 烤鸭
hint: 吃的
explain: 烤鸭已经烤熟了。
difficulty: 1

id: 85
question: 什么鹅不会游泳？
answer: 企鹅
hint: 南极的
explain: 企鹅是鸟，不是鹅。
difficulty: 1

id: 86
question: 什么兔没有毛？
answer: 免
hint: 少了一点
explain: 免字少了一点，不是兔。
difficulty: 2

id: 87
question: 什么羊没有角？
answer: 洋娃娃
hint: 玩具
explain: 洋娃娃是玩具，不是羊。
difficulty: 1

id: 88
question: 什么猴没有尾巴？
answer: 孙悟空
hint: 神话人物
explain: 孙悟空会变化，尾巴可以藏起来。
difficulty: 2

id: 89
question: 什么鼠不吃米？
answer: 老鼠
hint: 什么都吃
explain: 老鼠不只吃米，什么都吃。
difficulty: 1

id: 90
question: 什么牛不产奶？
answer: 蜗牛
hint: 小的
explain: 蜗牛不是牛，不产奶。
difficulty: 1

id: 91
question: 什么东西越用越短？
answer: 铅笔
hint: 写字用的
explain: 铅笔越写越短。
difficulty: 1

id: 92
question: 什么东西越洗越少？
answer: 肥皂
hint: 洗衣服用的
explain: 肥皂越洗越小。
difficulty: 1

id: 93
question: 什么东西越吃越渴？
answer: 咸菜
hint: 很咸的
explain: 咸菜太咸，越吃越渴。
difficulty: 1

id: 94
question: 什么东西越走越少？
answer: 寿命
hint: 人生
explain: 过一天少一天。
difficulty: 2

id: 95
question: 什么东西越学越多？
answer: 知识
hint: 学习得来的
explain: 知识越学越丰富。
difficulty: 1

id: 96
question: 什么东西越分越少？
answer: 蛋糕
hint: 吃的
explain: 蛋糕分的人多，每人就少。
difficulty: 1

id: 97
question: 什么东西越练越强？
answer: 身体
hint: 运动
explain: 锻炼身体，越来越强。
difficulty: 1

id: 98
question: 什么东西越积越多？
answer: 经验
hint: 工作中获得
explain: 经验积累，越来越多。
difficulty: 1

id: 99
question: 什么东西越吃越饿？
answer: 空气
hint: 什么味道
explain: 空气不能吃，吃了也饿。
difficulty: 1

id: 100
question: 什么东西越等越远？
answer: 青春
hint: 年龄
explain: 青春一去不复返。
difficulty: 2

id: 101
question: 什么东西天气越冷它越热？
answer: 被窝
hint: 睡觉用的
explain: 天冷钻被窝越暖和。
difficulty: 1

id: 102
question: 什么东西越凉越好吃？
answer: 冰淇淋
hint: 夏天的
explain: 冰淇淋就是要凉才好吃。
difficulty: 1

id: 103
question: 什么东西越热越好吃？
answer: 火锅
hint: 冬天吃的
explain: 火锅要热才好吃。
difficulty: 1

id: 104
question: 什么东西越黑越好看？
answer: 星空
hint: 晚上的
explain: 天越黑星星越亮。
difficulty: 1

id: 105
question: 什么东西越白越好看？
answer: 雪
hint: 冬天的
explain: 雪越白越漂亮。
difficulty: 1

id: 106
question: 什么东西越多越看不见？
answer: 雾
hint: 天气
explain: 雾越大越看不清。
difficulty: 1

id: 107
question: 什么东西越少越珍贵？
answer: 时间
hint: 生命
explain: 时间越少越珍贵。
difficulty: 2

id: 108
question: 什么东西越旧越好？
answer: 朋友
hint: 感情
explain: 朋友越老交情越深。
difficulty: 2

id: 109
question: 什么东西越多越轻松？
answer: 帮手
hint: 做事
explain: 帮手越多越轻松。
difficulty: 1

id: 110
question: 什么东西越少越安静？
answer: 人
hint: 环境
explain: 人越少越安静。
difficulty: 1

id: 111
question: 什么车没人开？
answer: 风车
hint: 靠风的
explain: 风车是靠风吹动的。
difficulty: 1

id: 112
question: 什么船不下水？
answer: 宇宙飞船
hint: 太空的
explain: 宇宙飞船在太空，不下水。
difficulty: 1

id: 113
question: 什么飞机没有翅膀？
answer: 直升机
hint: 垂直起降
explain: 直升机用旋翼。
difficulty: 1

id: 114
question: 什么火车没有轮子？
answer: 磁悬浮
hint: 悬浮的
explain: 磁悬浮是悬浮的，没有轮子。
difficulty: 1

id: 115
question: 什么汽车不用油？
answer: 电动车
hint: 新能源
explain: 电动车用电不用油。
difficulty: 1

id: 116
question: 什么自行车不用骑？
answer: 电动自行车
hint: 有电的
explain: 电动自行车可以不骑。
difficulty: 1

id: 117
question: 什么楼梯没有台阶？
answer: 电梯
hint: 自动的
explain: 电梯是自动升降的。
difficulty: 1

id: 118
question: 什么门没有门框？
answer: 心门
hint: 心里的
explain: 心门是比喻，没有门框。
difficulty: 2

id: 119
question: 什么窗不能看外面？
answer: 电脑窗口
hint: 屏幕上的
explain: 电脑窗口是软件界面。
difficulty: 1

id: 120
question: 什么桌子没有腿？
answer: 时间表
hint: 安排用的
explain: 时间表是表格，没有腿。
difficulty: 1

id: 121
question: 什么椅子不能坐？
answer: 牙椅
hint: 看牙用的
explain: 牙椅是躺着看牙的。
difficulty: 2

id: 122
question: 什么床不能躺？
answer: 机床
hint: 工厂的
explain: 机床是加工用的，不是睡的。
difficulty: 1

id: 123
question: 什么柜不能放东西？
answer: 掌柜
hint: 人
explain: 掌柜是人，不是柜子。
difficulty: 2

id: 124
question: 什么箱子不能装？
answer: 音箱
hint: 发声的
explain: 音箱是放声音的，不是装东西的。
difficulty: 1

id: 125
question: 什么盒子没有盖？
answer: 黑盒
hint: 飞机上的
explain: 黑盒是记录仪，不是普通盒子。
difficulty: 1

id: 126
question: 什么袋子不能装东西？
answer: 脑袋
hint: 身体的一部分
explain: 脑袋是头，不是袋子。
difficulty: 1

id: 127
question: 什么包不能背？
answer: 汉堡包
hint: 吃的
explain: 汉堡包是食物，不是包。
difficulty: 1

id: 128
question: 什么鞋不能穿？
answer: 溜冰鞋
hint: 冰上的
explain: 溜冰鞋只能滑冰用。
difficulty: 1

id: 129
question: 什么帽子不能戴？
answer: 笔帽
hint: 文具
explain: 笔帽是保护笔尖的。
difficulty: 1

id: 130
question: 什么衣服不能穿？
answer: 书皮
hint: 书本的
explain: 书皮是包书的，不是穿的。
difficulty: 1

id: 131
question: 什么裤子没有腿？
answer: 裤腰带
hint: 配件
explain: 裤腰带是绑的，没有腿。
difficulty: 1

id: 132
question: 什么手套没有手指？
answer: 拳击手套
hint: 运动的
explain: 拳击手套是连在一起的。
difficulty: 1

id: 133
question: 什么眼镜没有镜片？
answer: 隐形眼镜
hint: 透明的
explain: 隐形眼镜是软的，没有镜片。
difficulty: 1

id: 134
question: 什么手表没有指针？
answer: 电子表
hint: 数字显示
explain: 电子表显示数字，没有指针。
difficulty: 1

id: 135
question: 什么钟没有发条？
answer: 电子钟
hint: 电池的
explain: 电子钟用电池，没有发条。
difficulty: 1

id: 136
question: 什么锁没有钥匙？
answer: 密码锁
hint: 数字的
explain: 密码锁用密码开，不用钥匙。
difficulty: 1

id: 137
question: 什么灯不用电？
answer: 日光灯
hint: 不是字面意思
explain: 日光灯是名字，还是要用电。
difficulty: 2

id: 138
question: 什么扇不用手摇？
answer: 电扇
hint: 电动的
explain: 电扇用电，不用手摇。
difficulty: 1

id: 139
question: 什么炉不用火？
answer: 电炉
hint: 用电的
explain: 电炉用电加热，不用火。
difficulty: 1

id: 140
question: 什么冰箱不用电？
hint: 保温
answer: 保温箱
explain: 保温箱保冷，不用电。
difficulty: 1

id: 141
question: 什么电视机没有屏幕？
answer: 收音机
hint: 听的
explain: 收音机只能听，没有屏幕。
difficulty: 1

id: 142
question: 什么电话没有线？
answer: 手机
hint: 移动的
explain: 手机是无线的。
difficulty: 1

id: 143
question: 什么电脑没有键盘？
answer: 平板电脑
hint: 触屏的
explain: 平板电脑用触屏，没有键盘。
difficulty: 1

id: 144
question: 什么相机不用胶卷？
answer: 数码相机
hint: 数字的
explain: 数码相机用存储卡，不用胶卷。
difficulty: 1

id: 145
question: 什么收音机不能收音？
answer: 坏收音机
hint: 坏了
explain: 坏掉的收音机不能收音。
difficulty: 1

id: 146
question: 什么空调不制冷？
answer: 暖风机
hint: 制热的
explain: 暖风机是制热的，不制冷。
difficulty: 1

id: 147
question: 什么风扇不吹风？
answer: 坏风扇
hint: 坏了
explain: 坏掉的风扇不吹风。
difficulty: 1

id: 148
question: 什么计算器不能算？
answer: 坏计算器
hint: 坏了
explain: 坏掉的计算器不能算。
difficulty: 1

id: 149
question: 什么钟不走路？
answer: 挂钟
hint: 挂在墙上的
explain: 挂钟挂在墙上，不走动。
difficulty: 1

id: 150
question: 什么表没有时间？
answer: 图表
hint: 画画的
explain: 图表是数据展示，不是看时间的。
difficulty: 1

id: 151
question: 小明的爸爸有三个儿子，大儿子叫大毛，二儿子叫二毛，三儿子叫什么？
answer: 小明
hint: 题目里有答案
explain: 是小明的爸爸，所以三儿子是小明。
difficulty: 1

id: 152
question: 一年有多少个月？
answer: 12个
hint: 日历
explain: 一年有12个月。
difficulty: 1

id: 153
question: 一天有多少小时？
answer: 24小时
hint: 时间
explain: 一天有24小时。
difficulty: 1

id: 154
question: 一小时有多少分钟？
answer: 60分钟
hint: 时间
explain: 一小时有60分钟。
difficulty: 1

id: 155
question: 一分钟有多少秒？
answer: 60秒
hint: 时间
explain: 一分钟有60秒。
difficulty: 1

id: 156
question: 什么人一年只过一次生日？
answer: 所有人
hint: 生日
explain: 每个人每年只过一次生日。
difficulty: 1

id: 157
question: 什么人天天过生日？
answer: 没有人
hint: 想想看
explain: 没有人天天过生日。
difficulty: 1

id: 158
question: 哪个月有28天？
answer: 每个月
hint: 想想天数
explain: 每个月至少都有28天。
difficulty: 1

id: 159
question: 什么东西早上四条腿，中午两条腿，晚上三条腿？
answer: 人
hint: 一生
explain: 婴儿爬行、成年走路、老年拄拐。
difficulty: 2

id: 160
question: 什么东西越洗越脏？
answer: 水
hint: 洗东西用的
explain: 水洗东西带走污垢，自己变脏。
difficulty: 1

id: 161
question: 小华说他能在1秒钟之内把房间和房间里的玩具都变没了，他怎么做到？
answer: 闭上眼睛
hint: 不用动东西
explain: 闭上眼睛就看不到了。
difficulty: 1

id: 162
question: 什么东西你的，但是别人用的比你多？
answer: 名字
hint: 称呼
explain: 你的名字别人叫的次数比你说的多。
difficulty: 1

id: 163
question: 三个人同撑一把伞走在雨中，为什么都没淋湿？
answer: 没下雨
hint: 伞
explain: 根本没下雨，只是撑着伞。
difficulty: 1

id: 164
question: 什么人不用睡觉？
answer: 雪人
hint: 冬天
explain: 雪人是雪做的，不用睡觉。
difficulty: 1

id: 165
question: 什么样的路不能走？
answer: 电路
hint: 电
explain: 电路是电流的通道，不是人走的路。
difficulty: 1

id: 166
question: 小王剪头发，头发剪了多少钱？
answer: 0
hint: 头发值钱吗
explain: 头发本身不值钱，是剪头发服务要钱。
difficulty: 2

id: 167
question: 什么水取之不尽，用之不竭？
answer: 口水
hint: 嘴巴里的
explain: 口水源源不断。
difficulty: 1

id: 168
question: 人们最不喜欢喝什么水？
answer: 薪水
hint: 钱
explain: 薪水是工资，不是真的水。
difficulty: 1

id: 169
question: 什么桥下没水？
answer: 立交桥
hint: 城市里的
explain: 立交桥下面是路，不是水。
difficulty: 1

id: 170
question: 什么牛不会叫？
answer: 蜗牛
hint: 小的
explain: 蜗牛不是牛，不会叫。
difficulty: 1

id: 171
question: 什么鱼最值钱？
answer: 金鱼
hint: 颜色
explain: 金鱼名字有金。
difficulty: 1

id: 172
question: 什么鸟最大？
answer: 鸵鸟
hint: 不会飞
explain: 鸵鸟是最大的鸟。
difficulty: 1

id: 173
question: 什么马最懒？
answer: 木马
hint: 不动的
explain: 木马不会动。
difficulty: 1

id: 174
question: 什么羊最不老实？
answer: 洋鬼子
hint: 不是羊
explain: 洋鬼子是人对人的称呼。
difficulty: 2

id: 175
question: 什么狗最听话？
answer: 热狗
hint: 吃的
explain: 热狗不会不听话，因为它不是狗。
difficulty: 1

id: 176
question: 什么猫最干净？
answer: 熊猫
hint: 黑白的
explain: 熊猫有白有黑，看起来很干净。
difficulty: 1

id: 177
question: 什么虎最小？
answer: 壁虎
hint: 墙上爬的
explain: 壁虎是很小的动物。
difficulty: 1

id: 178
question: 什么龙最短？
answer: 火龙
hint: 香烟
explain: 火龙香烟很短。
difficulty: 2

id: 179
question: 什么蛇最毒？
answer: 地头蛇
hint: 人
explain: 地头蛇指当地的恶霸。
difficulty: 2

id: 180
question: 什么狼最狡猾？
answer: 灰太狼
hint: 动画片
explain: 灰太狼总是想新办法抓羊。
difficulty: 1

id: 181
question: 什么猪最聪明？
answer: 蛛
hint: 虫子
explain: 蛛是蜘蛛，不是猪。
difficulty: 2

id: 182
question: 什么鸡最懒？
answer: 飞机
hint: 天上飞
explain: 飞机的机不是鸡。
difficulty: 1

id: 183
question: 什么鸭最吵？
answer: 鸦
hint: 鸟
explain: 乌鸦叫起来很吵。
difficulty: 1

id: 184
question: 什么鹅最白？
answer: 白鹅
hint: 颜色
explain: 白鹅就是白色的鹅。
difficulty: 1

id: 185
question: 什么兔最慢？
answer: 兔子
hint: 龟兔赛跑
explain: 兔子虽然跑得快，但太骄傲会输。
difficulty: 1

id: 186
question: 什么熊最黑？
answer: 黑熊
hint: 颜色
explain: 黑熊就是黑色的熊。
difficulty: 1

id: 187
question: 什么猴最灵活？
answer: 孙悟空
hint: 神话
explain: 孙悟空会七十二变。
difficulty: 1

id: 188
question: 什么鼠最大？
answer: 袋鼠
hint: 有袋子
explain: 袋鼠比老鼠大多了。
difficulty: 1

id: 189
question: 什么牛最肥？
answer: 肥牛
hint: 火锅
explain: 肥牛是火锅食材。
difficulty: 1

id: 190
question: 什么虎最厉害？
answer: 纸老虎
hint: 比喻
explain: 纸老虎看着厉害，实际不行。
difficulty: 2

id: 191
question: 什么龙最可怕？
answer: 地头龙
hint: 恶霸
explain: 地头龙是当地恶霸的称呼。
difficulty: 2

id: 192
question: 什么蛇最长？
answer: 长蛇
hint: 简单
explain: 长蛇就是长的蛇。
difficulty: 1

id: 193
question: 什么狼最孤独？
answer: 孤狼
hint: 独行
explain: 孤狼是独自行动的狼。
difficulty: 1

id: 194
question: 什么猪最干净？
answer: 荷兰猪
hint: 宠物
explain: 荷兰猪是宠物，养得很干净。
difficulty: 1

id: 195
question: 什么鸡最臭？
answer: 机会
hint: 谐音
explain: 机会错过了就臭了。
difficulty: 2

id: 196
question: 什么鸭最好吃？
answer: 烤鸭
hint: 北京
explain: 北京烤鸭很有名。
difficulty: 1

id: 197
question: 什么鹅最好吃？
answer: 烧鹅
hint: 广东
explain: 广东烧鹅很有名。
difficulty: 1

id: 198
question: 什么兔最可爱？
answer: 兔兔
hint: 叠词
explain: 叫兔兔显得很可爱。
difficulty: 1

id: 199
question: 什么熊最受欢迎？
answer: 熊猫
hint: 国宝
explain: 熊猫是中国的国宝。
difficulty: 1

id: 200
question: 什么动物最勤劳？
answer: 蜜蜂
hint: 采蜜
explain: 蜜蜂每天都在采蜜。
difficulty: 1

path: data/ja.json
content: id: 201
question: パンはパンでも食べられないパンは？
answer: フライパン
hint: 料理に使う
explain: フライパンはパンがつくけど食べられません。
difficulty: 1

id: 202
question: 足がたくさんあるのに歩けないものは？
answer: 机
hint: 家具の一つ
explain: 机には足（脚）が4本あるけど、歩けません。
difficulty: 1

id: 203
question: 口があっても話せないものは？
answer: 瓶
hint: 飲み物を入れる
explain: 瓶には口（瓶口）があるけど、話せません。
difficulty: 1

id: 204
question: 目がたくさんあるのに見えないものは？
answer: じゃがいも
hint: 野菜の一つ
explain: じゃがいもには芽（目）があるけど、見えません。
difficulty: 1

id: 205
question: 手足があっても動けないものは？
answer: 椅子
hint: 座るもの
explain: 椅子には手足（脚・肘掛け）があるけど、動けません。
difficulty: 1

id: 206
question: 顔があっても笑えないものは？
answer: 時計
hint: 時間を教えてくれる
explain: 時計には文字盤（顔）があるけど、笑えません。
difficulty: 1

id: 207
question: 耳があっても聞こえないものは？
answer: お釜
hint: ご飯を炊く
explain: お釜には耳（取っ手）があるけど、聞こえません。
difficulty: 1

id: 208
question: 背中があっても振り向かないものは？
answer: 背広
hint: 男性が着る
explain: 背広には「背」があるけど、振り向けません。
difficulty: 1

id: 209
question: 心臓があっても生きていないものは？
answer: トランプ
hint: 遊びに使う
explain: トランプにはハート（心臓）があるけど、生きていません。
difficulty: 1

id: 210
question: 髪があっても美容院に行かないものは？
answer: 毛糸
hint: 編み物に使う
explain: 毛糸には「毛」があるけど、美容院に行きません。
difficulty: 1

id: 211
question: 頭があっても勉強できないものは？
answer: 爪
hint: 切る必要がある
explain: 爪には頭（先端）があるけど、勉強できません。
difficulty: 1

id: 212
question: 首があってもネクタイをしないものは？
answer: 瓶
hint: 飲み物を入れる
explain: 瓶には首（くびれた部分）があるけど、ネクタイをしません。
difficulty: 1

id: 213
question: 舌があっても味わえないものは？
answer: 靴
hint: 履くもの
explain: 靴には舌（つま先の部分）があるけど、味わえません。
difficulty: 1

id: 214
question: 歯があっても噛めないものは？
answer: 櫛
hint: 髪を整える
explain: 櫛には歯があるけど、噛めません。
difficulty: 1

id: 215
question: 腰があっても踊れないものは？
answer: 茶碗
hint: ご飯を入れる
explain: 茶碗には腰（くびれた部分）があるけど、踊れません。
difficulty: 1

id: 216
question: 腕があっても力持ちじゃないものは？
answer: めがね
hint: 視力を補う
explain: めがねには腕（つる）があるけど、力持ちじゃありません。
difficulty: 1

id: 217
question: 鼻があっても嗅げないものは？
answer: ポンプ
hint: 空気を入れる
explain: ポンプには鼻（ノズル）があるけど、嗅げません。
difficulty: 2

id: 218
question: 腹があってもご飯を食べないものは？
answer: 太鼓
hint: 叩く楽器
explain: 太鼓には腹があるけど、ご飯を食べません。
difficulty: 1

id: 219
question: 目があっても寝られないものは？
answer: 針
hint: 縫い物に使う
explain: 針には目（糸を通す穴）があるけど、寝られません。
difficulty: 1

id: 220
question: 口があっても歌えないものは？
answer: さいころ
hint: ゲームに使う
explain: さいころには口（数字の場所）があるけど、歌えません。
difficulty: 2

id: 221
question: 足跡を残さない歩き方は？
answer: 水泳
hint: 水の中でする
explain: 水泳は歩いているように動くけど、足跡が残りません。
difficulty: 1

id: 222
question: お風呂に入ると大きくなるものは？
answer: タオル
hint: 体を拭く
explain: タオルは水を吸うと膨らんで大きくなります。
difficulty: 1

id: 223
question: 誰でも持っている目は？
answer: 心の目
hint: 見えないけど見える
explain: 心の目は誰でも持っていますが、物理的な目ではありません。
difficulty: 2

id: 224
question: 上に行けば行くほど軽くなるものは？
answer: 風船
hint: 空に浮く
explain: 風船は空高く上がると空気が薄くなって膨らみます。
difficulty: 1

id: 225
question: 世界中で一番高い山は？
answer: 富士山
hint: 日本にある
explain: 日本では富士山が一番高い山です。
difficulty: 1

id: 226
question: 一升瓶に入っているのは何？
answer: 酒
hint: お祝いに飲む
explain: 一升瓶には日本酒が入っています。
difficulty: 1

id: 227
question: 読めないのに本なのは？
answer: 台本
hint: 役者が使う
explain: 台本は「本」がつくけど、普通の本とは違います。
difficulty: 1

id: 228
question: 車なのに走らないのは？
answer: 水車
hint: 水の力で回る
explain: 水車は「車」がつくけど、走りません。
difficulty: 1

id: 229
question: 道なのに歩けないのは？
answer: 茶道
hint: お茶の儀式
explain: 茶道は「道」がつくけど、歩く道ではありません。
difficulty: 1

id: 230
question: 花なのに咲かないのは？
answer: 火花
hint: 光る
explain: 火花は「花」がつくけど、植物の花ではありません。
difficulty: 1

id: 231
question: 船なのに浮かばないのは？
answer: 飛行船
hint: 空を飛ぶ
explain: 飛行船は「船」がつくけど、空を飛ぶので水に浮かびません。
difficulty: 1

id: 232
question: 魚なのに泳がないのは？
answer: 煮魚
hint: 料理された
explain: 煮魚は魚だけど、もう泳げません。
difficulty: 1

id: 233
question: 鳥なのに飛べないのは？
answer: だちょう
hint: 大きい
explain: だちょうは鳥だけど、飛べません。
difficulty: 1

id: 234
question: 毎日新しいのに古いのは？
answer: 新聞
hint: 毎朝届く
explain: 新聞は毎日新しいけど、次の日には古くなります。
difficulty: 1

id: 235
question: 世界中で一番重いものは？
answer: 約束
hint: 守るべきもの
explain: 「約束は重い」と言うように、責任が重いです。
difficulty: 2

id: 236
question: 何でも知っているのは？
answer: 辞書
hint: 言葉を調べる
explain: 辞書にはたくさんの言葉が載っています。
difficulty: 1

id: 237
question: 切っても痛くないのは？
answer: カード
hint: トランプで
explain: カードを切る（シャッフルする）のは痛くありません。
difficulty: 1

id: 238
question: 取っても減らないのは？
answer: 写真
hint: カメラで
explain: 写真を撮っても被写体は減りません。
difficulty: 1

id: 239
question: 暑いのに燃えないのは？
answer: お風呂
hint: 入ってリラックス
explain: お風呂のお湯は暑いけど燃えていません。
difficulty: 1

id: 240
question: 熱いのに冷たいのは？
answer: アイスコーヒー
hint: 夏に飲む
explain: アイスコーヒーは暑い夏に冷たくて美味しいです。
difficulty: 1

id: 241
question: 高いのに安いのは？
answer: 高い評価
hint: 褒められる
explain: 高い評価は「高い」けどお金がかかりません。
difficulty: 2

id: 242
question: 長いのに短いのは？
answer: 長電話
hint: 話し続ける
explain: 長電話は時間が長いけど、会話はあっという間です。
difficulty: 2

id: 243
question: 太いのに細いのは？
answer: 太い神経
hint: 気にしない
explain: 太い神経の人は細かいことを気にしません。
difficulty: 2

id: 244
question: 走っても進まないのは？
answer: ランニングマシン
hint: ジムにある
explain: ランニングマシンで走っても場所は移動しません。
difficulty: 1

id: 245
question: 泳げないのに水にいるのは？
answer: 水草
hint: 川や池にある
explain: 水草は水の中にあるけど泳げません。
difficulty: 1

id: 246
question: 重いのに浮くのは？
answer: 船
hint: 海を渡る
explain: 船は重いけど、浮力で浮きます。
difficulty: 1

id: 247
question: 明るいのに光らないのは？
answer: 性格
hint: 人の特徴
explain: 明るい性格は光りませんが、周りを明るくします。
difficulty: 2

id: 248
question: 黒いのに明るいのは？
answer: 黒光り
hint: 輝き
explain: 黒光りは黒いけど明るく見えます。
difficulty: 2

id: 249
question: 白いのに暗いのは？
answer: 白い目
hint: 冷たい態度
explain: 白い目で見られると暗い気持ちになります。
difficulty: 2

id: 250
question: 甘いのに苦いのは？
answer: 甘い言葉
hint: 口説き文句
explain: 甘い言葉は後で苦い思いをすることもあります。
difficulty: 2

id: 251
question: 鍵がたくさんあるのに開かないのは？
answer: ピアノ
hint: 楽器
explain: ピアノには鍵盤（鍵）があるけど、鍵を開けるものではありません。
difficulty: 1

id: 252
question: 頭と尻尾があるのに体がないのは？
answer: 硬貨
hint: お金
explain: 硬貨には表（頭）と裏（尻尾）があるけど、体はありません。
difficulty: 1

id: 253
question: 乾けば乾くほど濡れるものは？
answer: タオル
hint: お風呂の後
explain: タオルは体を乾かすと濡れます。
difficulty: 1

id: 254
question: 上がることはあっても下がらないのは？
answer: 年齢
hint: 誕生日
explain: 年齢は増えることはあっても減りません。
difficulty: 1

id: 255
question: 手があっても叩けないのは？
answer: 時計
hint: 時間を知る
explain: 時計には針（手）があるけど、叩けません。
difficulty: 1

id: 256
question: 世界中を回れるのに隅にあるのは？
answer: 切手
hint: 手紙に貼る
explain: 切手は封筒の隅に貼られて世界中を回ります。
difficulty: 1

id: 257
question: 降ってくるのに上がらないのは？
answer: 雨
hint: 空から
explain: 雨は空から降ってきますが、上には戻りません。
difficulty: 1

id: 258
question: 言葉を持っているのに話せないのは？
answer: 本
hint: 読むもの
explain: 本には言葉が書いてありますが、話せません。
difficulty: 1

id: 259
question: 指と親指があるのに生きていないのは？
answer: 手袋
hint: 手にはめる
explain: 手袋には指がありますが、生きていません。
difficulty: 1

id: 260
question: 指輪があるのに指がないのは？
answer: 電話
hint: かける
explain: 電話は鳴る（リング）けど、指はありません。
difficulty: 1

id: 261
question: 壊さないと使えないのは？
answer: 卵
hint: 料理
explain: 卵は殻を割らないと使えません。
difficulty: 1

id: 262
question: 部屋を満たせるのに場所を取らないのは？
answer: 光
hint: 見るために必要
explain: 光は部屋を明るくしますが、場所を取りません。
difficulty: 1

id: 263
question: あなたのものだけど、他人がもっと使うのは？
answer: 名前
hint: 呼ばれる
explain: 名前は自分のものですが、他人が呼ぶことが多いです。
difficulty: 1

id: 264
question: 歯がたくさんあるのに噛めないのは？
answer: のこぎり
hint: 切る道具
explain: のこぎりには歯がありますが、噛むことはできません。
difficulty: 1

id: 265
question: 走るけど歩かない、ベッドがあるけど寝ないのは？
answer: 川
hint: 水が流れる
explain: 川は流れ（走り）、川床があるけど寝ません。
difficulty: 1

id: 266
question: 触らずに持てるのは？
answer: 息
hint: 呼吸
explain: 息を止める（持つ）ことができます。
difficulty: 1

id: 267
question: 取れば取るほど大きくなるのは？
answer: 穴
hint: 掘る
explain: 穴は掘れば掘るほど大きくなります。
difficulty: 1

id: 268
question: 穴だらけなのに水を含むのは？
answer: スポンジ
hint: 掃除
explain: スポンジは穴だらけですが、水を吸います。
difficulty: 1

id: 269
question: 都市があるのに家がないのは？
answer: 地図
hint: 道を調べる
explain: 地図には都市が描かれていますが、本物の家はありません。
difficulty: 1

id: 270
question: 町を通り越しても動かないのは？
answer: 道路
hint: 車が走る
explain: 道路は場所を通りますが、動きません。
difficulty: 1

id: 271
question: 葉があるけど枝がないのは？
answer: 本
hint: ページ
explain: 本には葉（ページ）がありますが、枝はありません。
difficulty: 1

id: 272
question: ドアも窓もない部屋は？
answer: きのこ
hint: 食べる
explain: きのこ（マッシュルーム）は部屋じゃありません。
difficulty: 1

id: 273
question: 手のひらにある木は？
answer: やし
hint: 手のひら
explain: やし（棕櫚）と手のひらは同じ読み方です。
difficulty: 1

id: 274
question: 樹皮があるけど噛めないのは？
answer: 木
hint: 森林
explain: 木には樹皮がありますが、噛めません。
difficulty: 1

id: 275
question: 足があるけど歩けないのは？
answer: かたつむり
hint: ゆっくり動く
explain: かたつむりには足（腹足）があります。
difficulty: 2

id: 276
question: 触らずに壊せるのは？
answer: 約束
hint: 言葉
explain: 約束は触らずに破ることができます。
difficulty: 2

id: 277
question: 始まりも終わりも真ん中もないのは？
answer: ドーナツ
hint: 丸いお菓子
explain: ドーナツは円形で真ん中に穴があります。
difficulty: 1

id: 278
question: 心臓があるけど臓器がないのは？
answer: トランプ
hint: 遊ぶ
explain: トランプにはハートがありますが、臓器ではありません。
difficulty: 1

id: 279
question: 頭があるけど脳がないのは？
answer: ピン
hint: 尖っている
explain: ピンには頭がありますが、脳はありません。
difficulty: 1

id: 280
question: 庭を一周するけど動かないのは？
answer: フェンス
hint: 囲む
explain: フェンスは庭を囲みますが、動きません。
difficulty: 1

id: 281
question: カップだけど水を入れられないのは？
answer: カップケーキ
hint: お菓子
explain: カップケーキはカップと名前がつきますが、容器ではありません。
difficulty: 1

id: 282
question: 翼があるけど飛べないのは？
answer: ペンギン
hint: 寒い場所
explain: ペンギンには翼がありますが、飛べません。
difficulty: 1

id: 283
question: 名前を言うと壊れるものは？
answer: 沈黙
hint: 静か
explain: 「沈黙」と言うと、沈黙が破られます。
difficulty: 2

id: 284
question: 一番物語が多い建物は？
answer: 図書館
hint: 本
explain: 図書館には一番多くの物語（本）があります。
difficulty: 1

id: 285
question: 5文字の単語で、2文字足すと短くなるのは？
answer: 短い
hint: 言葉遊び
explain: 「短い」に「く」を足すと「短く」なります。
difficulty: 2

id: 286
question: Eで始まってEで終わるけど、文字が一つしかないのは？
answer: 封筒
hint: 手紙
explain: 封筒（Envelope）はEで始まり終わり、手紙が一つ入ります。
difficulty: 2

id: 287
question: 壊さないと使えない食べ物は？
answer: 卵
hint: 朝食
explain: 卵は割らないと使えません。
difficulty: 1

id: 288
question: あなたのものだけど他人がもっと使うのは？
answer: 名前
hint: 呼び方
explain: 名前は自分のものですが、他人がよく使います。
difficulty: 1

id: 289
question: 部屋を満たすけど場所を取らないのは？
answer: 光
hint: 明るさ
explain: 光は部屋を照らしますが、物理的な場所を取りません。
difficulty: 1

id: 290
question: 取れるけど投げられないのは？
answer: 風邪
hint: 病気
explain: 風邪はひく（取る）ことはできますが、投げられません。
difficulty: 1

id: 291
question: 使えば使うほど鋭くなるのは？
answer: 脳
hint: 考える
explain: 脳は使うほど鋭くなります。
difficulty: 1

id: 292
question: 触らずに持てるのは？
answer: 会話
hint: 話す
explain: 会話は触らずに持続させることができます。
difficulty: 2

id: 293
question: 名前を言うと壊れるのは？
answer: 沈黙
hint: 静寂
explain: 「沈黙」と言うと沈黙が破られます。
difficulty: 1

id: 294
question: 乾けば乾くほど濡れるのは？
answer: タオル
hint: 拭く
explain: タオルは拭くほど濡れます。
difficulty: 1

id: 295
question: 触らずに壊せるのは？
answer: 約束
hint: 守る
explain: 約束は触らずに破ることができます。
difficulty: 1

id: 296
question: 走るけど歩かないのは？
answer: 水
hint: 流れる
explain: 水は流れる（走る）ことがあります。
difficulty: 1

id: 297
question: ベッドがあるけど寝ないのは？
answer: 川
hint: 川床
explain: 川には川床がありますが、川は寝ません。
difficulty: 1

id: 298
question: 銀行があるけどお金がないのは？
answer: 川
hint: 川岸
explain: 川には岸（銀行）がありますが、お金はありません。
difficulty: 1

id: 299
question: いつも来るけど着かないのは？
answer: 明日
hint: 時間
explain: 明日はいつも来ますが、今日にはなりません。
difficulty: 1

id: 300
question: 上にお尻があるのは？
answer: 足
hint: 体
explain: お尻は足の上にあります。
difficulty: 1

id: 301
question: 口がなくても話し、耳がなくても聞く。体がないけど風で生きる。何？
answer: こだま
hint: 音
explain: こだまは体がなくても音を返します。
difficulty: 2

id: 302
question: 多ければ多いほど見えなくなるのは？
answer: 闇
hint: 夜
explain: 闇が多ければ見えなくなります。
difficulty: 1

id: 303
question: 都市があるけど家がない。山があるけど木がない。水があるけど魚がない。何？
answer: 地図
hint: 旅行
explain: 地図には本物ではない都市、山、水が描かれています。
difficulty: 1

id: 304
question: いつもお腹を空かせていて、何かを食べ続ける。触れると赤くなる。何？
answer: 火
hint: 熱い
explain: 火は燃料を消費し、触れると火傷します。
difficulty: 1

id: 305
question: 取れば取るほど後ろに残るのは？
answer: 足跡
hint: 歩く
explain: 足跡を残しながら歩きます。
difficulty: 1

id: 306
question: 鍵があっても鍵がない。場所があっても部屋がない。入れないのに中に入る。何？
answer: キーボード
hint: パソコン
explain: キーボードには鍵、スペース、エンターキーがあります。
difficulty: 1

id: 307
question: 動かずに世界中を回れるのは？
answer: 切手
hint: 郵便
explain: 切手は封筒に貼られて世界中を回ります。
difficulty: 1

id: 308
question: 頭と尻尾があるけど体がないのは？
answer: 硬貨
hint: お金
explain: 硬貨には表と裏（頭と尻尾）があります。
difficulty: 1

id: 309
question: ドアも窓もない部屋は？
answer: きのこ
hint: 食べる
explain: きのこは部屋ではありません。
difficulty: 1

id: 310
question: 取れるけど投げられないのは？
answer: 風邪
hint: 病気
explain: 風邪はひけますが、投げられません。
difficulty: 1

id: 311
question: 触らずに壊せるのは？
answer: 約束
hint: 言葉
explain: 約束は触らずに破ることができます。
difficulty: 1

id: 312
question: Tで始まってTで終わって、Tが入っているのは？
answer: ティーポット
hint: お茶
explain: ティーポットはTで始まり終わり、ティー（茶）が入ります。
difficulty: 1

id: 313
question: 右手で持てるけど左手で持てないのは？
answer: 左手
hint: 自分の体
explain: 左手は左手で持てません。
difficulty: 1

id: 314
question: 28日ある月は？
answer: 全部の月
hint: カレンダー
explain: 全部の月に少なくとも28日はあります。
difficulty: 1

id: 315
question: 上がることはあっても下がらないのは？
answer: 年齢
hint: 歳
explain: 年齢は増えるだけです。
difficulty: 1

id: 316
question: 使えば使うほど鋭くなるのは？
answer: 脳
hint: 頭
explain: 脳は学習で鋭くなります。
difficulty: 1

id: 317
question: 穴だらけなのに水を含むのは？
answer: スポンジ
hint: 掃除道具
explain: スポンジは穴がありますが、水を吸います。
difficulty: 1

id: 318
question: 首があるけど頭がないのは？
answer: 瓶
hint: 容器
explain: 瓶には首がありますが、頭はありません。
difficulty: 1

id: 319
question: 鍵がたくさんあるのに鍵を開けないのは？
answer: ピアノ
hint: 楽器
explain: ピアノの鍵盤は鍵を開けません。
difficulty: 1

id: 320
question: 走るけど歩かないのは？
answer: 水
hint: 液体
explain: 水は流れます。
difficulty: 1

id: 321
question: 足があるけど歩けないのは？
answer: 机
hint: 家具
explain: 机には脚があります。
difficulty: 1

id: 322
question: 手があっても叩けないのは？
answer: 時計
hint: 時間
explain: 時計の針は手と呼ばれます。
difficulty: 1

id: 323
question: 歯があっても噛めないのは？
answer: 櫛
hint: 髪
explain: 櫛には歯があります。
difficulty: 1

id: 324
question: 目があっても見えないのは？
answer: 針
hint: 縫う
explain: 針には糸を通す目があります。
difficulty: 1

id: 325
question: 耳があっても聞こえないのは？
answer: とうもろこし
hint: 野菜
explain: とうもろこしには耳があります。
difficulty: 1

id: 326
question: 舌があっても話せないのは？
answer: 靴
hint: 履く
explain: 靴には舌があります。
difficulty: 1

id: 327
question: 顔があっても目がないのは？
answer: 時計
hint: 時間
explain: 時計には文字盤（顔）があります。
difficulty: 1

id: 328
question: 背骨があっても骨がないのは？
answer: 本
hint: 読む
explain: 本には背表紙（背骨）があります。
difficulty: 1

id: 329
question: 言葉があるけど話さないのは？
answer: 本
hint: ページ
explain: 本には言葉が書かれています。
difficulty: 1

id: 330
question: 指輪があるけど指がないのは？
answer: 電話
hint: 鳴る
explain: 電話は鳴る（リング）けど、指はありません。
difficulty: 1

id: 331
question: 降ってくるのに上がらないのは？
answer: 雨
hint: 天気
explain: 雨は上には戻りません。
difficulty: 1

id: 332
question: あなたのものだけど他人がもっと使うのは？
answer: 名前
hint: 呼び名
explain: 他人があなたの名前をよく呼びます。
difficulty: 1

id: 333
question: 部屋を満たすけど場所を取らないのは？
answer: 光
hint: 明るい
explain: 光は物理的な場所を取りません。
difficulty: 1

id: 334
question: 名前を言うと壊れるのは？
answer: 沈黙
hint: 静か
explain: 「沈黙」と言うと沈黙が破られます。
difficulty: 1

id: 335
question: 乾けば乾くほど濡れるのは？
answer: タオル
hint: 風呂
explain: タオルは乾かすほど濡れます。
difficulty: 1

id: 336
question: 心臓があるけど臓器がないのは？
answer: トランプ
hint: ゲーム
explain: トランプにはハートがあります。
difficulty: 1

id: 337
question: 手のひらにある木は？
answer: やし
hint: 植物
explain: やし（棕櫚）は手のひらと同じ読み方です。
difficulty: 1

id: 338
question: 一番物語が多い建物は？
answer: 図書館
hint: 本
explain: 図書館には本（物語）がたくさんあります。
difficulty: 1

id: 339
question: ベッドがあるけど寝ないのは？
answer: 川
hint: 自然
explain: 川には川床があります。
difficulty: 1

id: 340
question: 銀行があるけどお金がないのは？
answer: 川
hint: 水
explain: 川には川岸があります。
difficulty: 1

id: 341
question: いつも来るけど着かないのは？
answer: 明日
hint: 時間
explain: 明日はいつも来ますが、今日にはなりません。
difficulty: 1

id: 342
question: 上にお尻があるのは？
answer: 足
hint: 体の一部
explain: お尻は足の上にあります。
difficulty: 1

id: 343
question: 味より匂いがいいのは？
answer: 舌
hint: 口の中
explain: 舌は味を感じますが、舌自体の匂いは...
difficulty: 2

id: 344
question: 名前を言うと壊れるほど壊れやすいのは？
answer: 沈黙
hint: 音がない
explain: 「沈黙」と言うと沈黙が破られます。
difficulty: 1

id: 345
question: 水を入れられないカップは？
answer: カップケーキ
hint: お菓子
explain: カップケーキは容器ではありません。
difficulty: 1

id: 346
question: 噛まない犬は？
answer: ホットドッグ
hint: 食べ物
explain: ホットドッグは食べ物で犬ではありません。
difficulty: 1

id: 347
question: 袖がないコートは？
answer: ペンキ
hint: 塗る
explain: ペンキのコート（塗り）には袖がありません。
difficulty: 1

id: 348
question: 町を通るけど動かないのは？
answer: 道路
hint: 車
explain: 道路は場所を通りますが動きません。
difficulty: 1

id: 349
question: 鍵がたくさんあるのに何も開けないのは？
answer: キーボード
hint: タイピング
explain: キーボードのキーは鍵を開けません。
difficulty: 1

id: 350
question: 壊さないと使えないのは？
answer: 卵
hint: 食べ物
explain: 卵は割らないと使えません。
difficulty: 1

id: 351
question: 次のうち、一番重いのはどれ？
answer: 約束
hint: 守るもの
explain: 約束は心が重いです。
difficulty: 2

id: 352
question: 切っても切れないのは？
answer: 縁
hint: 人間関係
explain: 縁は物理的に切れません。
difficulty: 2

id: 353
question: 買えないプレゼントは？
answer: 時間
hint: 貴重なもの
explain: 時間は買えません。
difficulty: 1

id: 354
question: 見えないけどあるものは？
answer: 空気
hint: 呼吸
explain: 空気は見えませんが存在します。
difficulty: 1

id: 355
question: 一番長い単語は？
answer: 笑顔
hint: 距離
explain: 笑顔には1マイル（smile）が含まれています。
difficulty: 2

id: 356
question: 1分間に1回、1時間に2回、1世紀に0回あるのは？
answer: 文字のM
hint: 文字数
explain: Mは1分間に1回、1時間に2回出てきます。
difficulty: 2

id: 357
question: 上に行くほど軽くなるのは？
answer: 風船
hint: 空気
explain: 風船は上に行くと膨らみます。
difficulty: 1

id: 358
question: 座れない椅子は？
answer: 意思
hint: 言葉遊び
explain: 意思（いし）は椅子とは違います。
difficulty: 2

id: 359
question: 乗れない車は？
answer: 水車
hint: 回る
explain: 水車は乗れません。
difficulty: 1

id: 360
question: 歩けない道は？
answer: 電道
hint: 電気
explain: 電道は電気が通る道です。
difficulty: 1

id: 361
question: 咲かない花は？
answer: 火花
hint: 光る
explain: 火花は花ではありません。
difficulty: 1

id: 362
question: 浮かばない船は？
answer: 飛行船
hint: 空
explain: 飛行船は空に浮かびます。
difficulty: 1

id: 363
question: 泳がない魚は？
answer: 干物
hint: 食べる
explain: 干物は泳げません。
difficulty: 1

id: 364
question: 飛べない鳥は？
answer: だちょう
hint: 大きい
explain: だちょうは飛べません。
difficulty: 1

id: 365
question: 鳴かない犬は？
answer: ホットドッグ
hint: 食べる
explain: ホットドッグは食べ物です。
difficulty: 1

id: 366
question: 産まない卵は？
answer: ゆで卵
hint: 料理
explain: ゆで卵は産まれません。
difficulty: 1

id: 367
question: 噛めない歯は？
answer: 鋸の歯
hint: 道具
explain: 鋸の歯は噛むためではありません。
difficulty: 1

id: 368
question: 止まらない時計は？
answer: 砂時計
hint: 流れる
explain: 砂時計は砂が流れ続けます。
difficulty: 1

id: 369
question: 消えない光は？
answer: 蛍光灯
hint: 電気
explain: 蛍光灯は電源を切ると消えますが、名前に光があります。
difficulty: 2

id: 370
question: 終わらない物語は？
answer: 人生
hint: 生きる
explain: 人生は終わるまで続きません。
difficulty: 1

id: 371
question: 燃えない火は？
answer: 花火
hint: 綺麗
explain: 花火は燃えますが、普通の火ではありません。
difficulty: 1

id: 372
question: 流れない水は？
answer: 死水
hint: 止まる
explain: 死水は流れません。
difficulty: 2

id: 373
question: 咲かない桜は？
answer: 桜餅
hint: 食べる
explain: 桜餅は桜の葉で包まれています。
difficulty: 1

id: 374
question: 歌えない歌は？
answer: 校歌
hint: 学校
explain: 校歌は歌えますが、普通の歌とは違います。
difficulty: 1

id: 375
question: 踊れない踊りは？
answer: 盆踊り
hint: 夏
explain: 盆踊りは踊れますが、形式的です。
difficulty: 1

id: 376
question: 遊べない遊びは？
answer: 遊園地
hint: 場所
explain: 遊園地は場所で遊びではありません。
difficulty: 1

id: 377
question: 勉強できない勉強は？
answer: 勉強家
hint: 人
explain: 勉強家は人の性格です。
difficulty: 1

id: 378
question: 泳げない泳ぎは？
answer: 水泳
hint: スポーツ
explain: 水泳は泳ぎ方の名前です。
difficulty: 1

id: 379
question: 走れない走りは？
answer: 走り書き
hint: 文字
explain: 走り書きは急いで書くことです。
difficulty: 1

id: 380
question: 飛べない飛びは？
answer: 飛び出し
hint: 道路
explain: 飛び出しは危険です。
difficulty: 1

id: 381
question: 登れない登りは？
answer: 登り坂
hint: 道
explain: 登り坂は登るのが大変です。
difficulty: 1

id: 382
question: 下りられない下りは？
answer: 下り坂
hint: 道
explain: 下り坂は楽に進めます。
difficulty: 1

id: 383
question: 入れない入れ物は？
answer: 入れ歯
hint: 口
explain: 入れ歯は入れるものですが、物を入れません。
difficulty: 1

id: 384
question: 出せない出し物は？
answer: 出汁
hint: 料理
explain: 出汁はスープの出汁です。
difficulty: 1

id: 385
question: 食べられない食べ物は？
answer: 食べログ
hint: サイト
explain: 食べログは情報サイトです。
difficulty: 2

id: 386
question: 飲めない飲み物は？
answer: 飲み会
hint: 集まり
explain: 飲み会は集まりです。
difficulty: 1

id: 387
question: 着られない着物は？
answer: 着付け
hint: 技術
explain: 着付けは着物を着る技術です。
difficulty: 1

id: 388
question: 履けない履物は？
answer: 履歴書
hint: 書類
explain: 履歴書は書類です。
difficulty: 1

id: 389
question: 被れない被り物は？
answer: 被り物
hint: 演劇
explain: 被り物は被るものですが、一般的ではありません。
difficulty: 1

id: 390
question: かけられない掛け時計は？
answer: 掛け布団
hint: 寝具
explain: 掛け布団は時計ではありません。
difficulty: 1

id: 391
question: 座れない座布団は？
answer: 座右の銘
hint: 言葉
explain: 座右の銘は布団ではありません。
difficulty: 1

id: 392
question: 寝られない寝床は？
answer: 寝言
hint: 夢
explain: 寝言は寝ている時に言います。
difficulty: 1

id: 393
question: 起きられない起き上がりは？
answer: 起き上がりこぼし
hint: おもちゃ
explain: 起き上がりこぼしは常に起きます。
difficulty: 1

id: 394
question: 立たない立ち上がりは？
answer: 立ち上がり
hint: 始まり
explain: 立ち上がりはスタートの意味です。
difficulty: 1

id: 395
question: 歩けない歩道は？
answer: 歩道橋
hint: 橋
explain: 歩道橋は歩けますが、道ではありません。
difficulty: 1

id: 396
question: 走れない走道は？
answer: 走廊
hint: 廊下
explain: 走廊は廊下のことです。
difficulty: 1

id: 397
question: 飛べない飛行機は？
answer: 紙飛行機
hint: 遊ぶ
explain: 紙飛行機は飛びますが、本物の飛行機ではありません。
difficulty: 1

id: 398
question: 泳げない水泳は？
answer: 水泳大会
hint: イベント
explain: 水泳大会は泳ぐ場所です。
difficulty: 1

id: 399
question: 登れない山登りは？
answer: 山登り
hint: スポーツ
explain: 山登りは登る活動です。
difficulty: 1

id: 400
question: 一番働き者は？
answer: ミツバチ
hint: 蜜
explain: ミツバチは毎日働いています。
difficulty: 1

path: data/en.json
content: id: 101
question: What has keys but can't open locks?
answer: piano
hint: It is a musical instrument.
explain: A piano has keys but they are for playing music, not opening locks.
difficulty: 1

id: 102
question: What has a head and a tail but no body?
answer: coin
hint: You use it to buy things.
explain: A coin has a 'head' side and a 'tail' side, but no body.
difficulty: 1

id: 103
question: What gets wetter the more it dries?
answer: towel
hint: You use it after a shower.
explain: A towel dries you off, but in doing so it gets wet.
difficulty: 1

id: 104
question: What has legs but cannot walk?
answer: table
hint: It's a piece of furniture.
explain: Tables have legs but they can't walk.
difficulty: 1

id: 105
question: What has a neck but no head?
answer: bottle
hint: It holds drinks.
explain: A bottle has a neck but no head.
difficulty: 1

id: 106
question: What goes up but never comes down?
answer: age
hint: It increases every year.
explain: Your age only goes up, never down.
difficulty: 1

id: 107
question: What has hands but can't clap?
answer: clock
hint: It tells you the time.
explain: A clock has hands (hour, minute, second) but can't clap.
difficulty: 1

id: 108
question: What has teeth but can't bite?
answer: comb
hint: You use it on your hair.
explain: A comb has teeth but can't bite anything.
difficulty: 1

id: 109
question: What has an eye but can't see?
answer: needle
hint: You use it for sewing.
explain: A needle has an eye (the hole for thread) but can't see.
difficulty: 1

id: 110
question: What has ears but can't hear?
answer: corn
hint: It's a yellow vegetable.
explain: Corn has ears but they can't hear.
difficulty: 1

id: 111
question: What can travel around the world while staying in a corner?
answer: stamp
hint: You put it on envelopes.
explain: A stamp sits in the corner of an envelope but travels worldwide.
difficulty: 1

id: 112
question: What comes down but never goes up?
answer: rain
hint: It falls from clouds.
explain: Rain falls down but never goes back up.
difficulty: 1

id: 113
question: What has a tongue but can't speak?
answer: shoe
hint: You wear it on your feet.
explain: A shoe has a tongue but can't speak.
difficulty: 1

id: 114
question: What has a face but no eyes?
answer: clock
hint: It tells time.
explain: A clock has a face but no eyes.
difficulty: 1

id: 115
question: What has a spine but no bones?
answer: book
hint: You read it.
explain: A book has a spine (the binding) but no bones.
difficulty: 1

id: 116
question: What can you catch but not throw?
answer: cold
hint: It makes you sick.
explain: You can catch a cold but you can't throw it.
difficulty: 1

id: 117
question: What has words but never speaks?
answer: book
hint: You read it.
explain: A book has words but can't speak.
difficulty: 1

id: 118
question: What has a thumb and fingers but is not alive?
answer: glove
hint: You wear it on your hand.
explain: A glove has a thumb and fingers but is not alive.
difficulty: 1

id: 119
question: What has a ring but no finger?
answer: phone
hint: It rings when someone calls.
explain: A phone rings but doesn't have fingers.
difficulty: 1

id: 120
question: What has to be broken before you can use it?
answer: egg
hint: It comes from chickens.
explain: An egg must be broken before you can use it.
difficulty: 1

id: 121
question: What begins with T, ends with T, and has T in it?
answer: teapot
hint: You use it to make tea.
explain: A teapot begins with T, ends with T, and has tea in it.
difficulty: 1

id: 122
question: What gets sharper the more you use it?
answer: brain
hint: It's inside your head.
explain: Your brain gets sharper with use through learning.
difficulty: 2

id: 123
question: What can fill a room but takes up no space?
answer: light
hint: You need it to see.
explain: Light can fill a room but takes up no physical space.
difficulty: 1

id: 124
question: What belongs to you, but others use it more than you?
answer: name
hint: People call you by it.
explain: Your name belongs to you but others say it more.
difficulty: 1

id: 125
question: What has many teeth but can't bite?
answer: saw
hint: A carpenter uses it.
explain: A saw has teeth for cutting but can't bite.
difficulty: 1

id: 126
question: What runs but never walks, has a bed but never sleeps?
answer: river
hint: It flows to the sea.
explain: A river runs (flows) and has a riverbed but doesn't sleep.
difficulty: 1

id: 127
question: What can you hold without touching it?
answer: breath
hint: You do it every day.
explain: You can hold your breath without touching it.
difficulty: 1

id: 128
question: What gets bigger the more you take away?
answer: hole
hint: You might find one in your sock.
explain: A hole gets bigger as you take material away.
difficulty: 1

id: 129
question: What is full of holes but still holds water?
answer: sponge
hint: You use it for cleaning.
explain: A sponge is full of holes but absorbs and holds water.
difficulty: 1

id: 130
question: What has cities, but no houses live there?
answer: map
hint: It helps you find your way.
explain: A map shows cities but has no real houses.
difficulty: 1

id: 131
question: What goes through towns and over hills but never moves?
answer: road
hint: Cars drive on it.
explain: A road goes places but never moves itself.
difficulty: 1

id: 132
question: What has leaves but no branches?
answer: book
hint: You read it.
explain: A book has pages called leaves but no branches.
difficulty: 1

id: 133
question: What kind of room has no doors or windows?
answer: mushroom
hint: It's a fungus.
explain: A mushroom sounds like a room but isn't one.
difficulty: 1

id: 134
question: What kind of tree can you carry in your hand?
answer: palm
hint: It's part of your hand.
explain: A palm tree sounds like the palm of your hand.
difficulty: 1

id: 135
question: What has a bark but can't bite?
answer: tree
hint: It grows in the forest.
explain: A tree has bark but can't bite.
difficulty: 1

id: 136
question: What has a foot but no legs?
answer: snail
hint: It moves slowly.
explain: A snail has a 'foot' (its body) but no legs.
difficulty: 2

id: 137
question: What can you break without touching it?
answer: promise
hint: It's something you say you'll do.
explain: You can break a promise without physically touching it.
difficulty: 2

id: 138
question: What has no beginning, end, or middle?
answer: donut
hint: It's a round pastry.
explain: A donut is a circle with a hole in the middle.
difficulty: 1

id: 139
question: What has a heart but no organs?
answer: deck of cards
hint: You play games with it.
explain: A deck has hearts but no organs.
difficulty: 1

id: 140
question: What has a head but no brain?
answer: pin
hint: It's sharp.
explain: A pin has a head but no brain.
difficulty: 1

id: 141
question: What runs around the whole yard without moving?
answer: fence
hint: It marks your property.
explain: A fence goes around the yard but doesn't move.
difficulty: 1

id: 142
question: What kind of cup can't hold water?
answer: cupcake
hint: It's a sweet treat.
explain: A cupcake has 'cup' in the name but isn't a container.
difficulty: 1

id: 143
question: What has wings but can't fly?
answer: penguin
hint: It lives in cold places.
explain: Penguins have wings but can't fly.
difficulty: 1

id: 144
question: What is so fragile that saying its name breaks it?
answer: silence
hint: It's the absence of sound.
explain: When you say 'silence', you break the silence.
difficulty: 2

id: 145
question: What building has the most stories?
answer: library
hint: You borrow books here.
explain: A library has the most stories (books).
difficulty: 1

id: 146
question: What tastes better than it smells?
answer: tongue
hint: It's in your mouth.
explain: Your tongue tastes but itself doesn't smell great.
difficulty: 2

id: 147
question: What has 13 hearts but no other organs?
answer: deck of cards
hint: For playing games.
explain: A deck of cards has 13 hearts in the suit.
difficulty: 1

id: 148
question: What can you keep but cannot share?
answer: secret
hint: Don't tell anyone.
explain: Once you share a secret, it's not a secret anymore.
difficulty: 1

id: 149
question: What gets broken without being held?
answer: promise
hint: Words matter.
explain: A promise can be broken without physical contact.
difficulty: 2

id: 150
question: What can you hear but not touch?
answer: voice
hint: Speaking.
explain: You can hear a voice but can't physically touch it.
difficulty: 1

id: 151
question: What has a face and two hands but no arms or legs?
answer: clock
hint: Tells time.
explain: A clock has a face and two hands for hours and minutes.
difficulty: 1

id: 152
question: What comes once in a minute, twice in a moment, but never in a thousand years?
answer: letter M
hint: Look at the words.
explain: The letter M appears once in minute, twice in moment.
difficulty: 2

id: 153
question: What has many keys but can't open a single door?
answer: piano
hint: Musical instrument.
explain: A piano has 88 keys but none open doors.
difficulty: 1

id: 154
question: What gets wet while drying?
answer: towel
hint: After bath.
explain: A towel gets wet when you dry yourself with it.
difficulty: 1

id: 155
question: What kind of coat is always wet when you put it on?
answer: coat of paint
hint: Home improvement.
explain: A coat of paint is wet when applied.
difficulty: 2

id: 156
question: What goes through water but never gets wet?
answer: reflection
hint: Mirror image.
explain: A reflection in water doesn't get wet.
difficulty: 2

id: 157
question: What can run but never walks, has a mouth but never talks?
answer: river
hint: Nature.
explain: A river runs and has a mouth where it meets the sea.
difficulty: 1

id: 158
question: What has a bottom at the top?
answer: legs
hint: Your body.
explain: The bottom of your body is at the top of your legs.
difficulty: 2

id: 159
question: What can travel all around the world without leaving its corner?
answer: stamp
hint: Mail.
explain: A stamp sits in a corner of an envelope traveling the world.
difficulty: 1

id: 160
question: What has a head and a tail but no body?
answer: coin
hint: Money.
explain: A coin has a head side and tail side but no body.
difficulty: 1

id: 161
question: What is full of holes but still holds water?
answer: sponge
hint: Cleaning.
explain: A sponge has holes but absorbs water.
difficulty: 1

id: 162
question: What do you call a bear with no teeth?
answer: gummy bear
hint: Candy.
explain: A gummy bear candy has no teeth.
difficulty: 1

id: 163
question: What kind of dog never bites?
answer: hot dog
hint: Food.
explain: A hot dog is food not a real dog.
difficulty: 1

id: 164
question: What kind of cup doesn't hold water?
answer: cupcake
hint: Baked treat.
explain: A cupcake is a cake not a cup.
difficulty: 1

id: 165
question: What month has 28 days?
answer: all of them
hint: Every month.
explain: All 12 months have at least 28 days.
difficulty: 1

id: 166
question: What goes up but never comes down?
answer: age
hint: Birthday.
explain: Your age only increases never decreases.
difficulty: 1

id: 167
question: What has legs but cannot walk?
answer: table
hint: Furniture.
explain: Tables have legs but can't move.
difficulty: 1

id: 168
question: What comes down but never goes up?
answer: rain
hint: Weather.
explain: Rain falls from the sky and doesn't go back up.
difficulty: 1

id: 169
question: What can you catch but not throw?
answer: cold
hint: Sickness.
explain: You catch a cold but can't throw it to someone.
difficulty: 1

id: 170
question: What has one eye but can't see?
answer: needle
hint: Sewing.
explain: A needle has one eye for the thread.
difficulty: 1

id: 171
question: What has a neck but no head?
answer: shirt
hint: Clothing.
explain: A shirt has a neck opening but no head.
difficulty: 1

id: 172
question: What has ears but can't hear?
answer: corn
hint: Vegetable.
explain: Corn has ears of corn but they can't hear.
difficulty: 1

id: 173
question: What has a spine but no bones?
answer: book
hint: Reading.
explain: A book has a spine (binding) but no bones.
difficulty: 1

id: 174
question: What has teeth but can't bite?
answer: comb
hint: Grooming.
explain: A comb has teeth for hair but can't bite.
difficulty: 1

id: 175
question: What has hands but can't clap?
answer: clock
hint: Time.
explain: A clock has hands for time but can't clap.
difficulty: 1

id: 176
question: What has a tongue but can't speak?
answer: shoe
hint: Footwear.
explain: A shoe has a tongue part but can't speak.
difficulty: 1

id: 177
question: What has a ring but no finger?
answer: telephone
hint: Communication.
explain: A telephone rings but doesn't wear rings.
difficulty: 1

id: 178
question: What has a face but can't smile?
answer: clock
hint: Timepiece.
explain: A clock has a face but can't express emotions.
difficulty: 1

id: 179
question: What has many keys but unlocks nothing?
answer: keyboard
hint: Computer.
explain: A keyboard has keys but doesn't unlock anything.
difficulty: 1

id: 180
question: What has a thumb but no fingers?
answer: mittens
hint: Winter wear.
explain: Mittens have a thumb but no separate fingers.
difficulty: 1

id: 181
question: What has an eye but cannot see?
answer: hurricane
hint: Weather.
explain: A hurricane has an eye (center) but can't see.
difficulty: 2

id: 182
question: What has a leg but cannot walk?
answer: chair
hint: Furniture.
explain: A chair has legs but stays in place.
difficulty: 1

id: 183
question: What has a nose but can't smell?
answer: airplane
hint: Transportation.
explain: An airplane has a nose (front) but can't smell.
difficulty: 1

id: 184
question: What has a mouth but never speaks?
answer: jar
hint: Container.
explain: A jar has a mouth (opening) but can't speak.
difficulty: 1

id: 185
question: What has a back but no front?
answer: backpack
hint: School.
explain: A backpack is worn on the back.
difficulty: 1

id: 186
question: What has a tongue but no mouth?
answer: flame
hint: Fire.
explain: A flame has a tongue shape but no mouth.
difficulty: 2

id: 187
question: What has a heart but no body?
answer: artichoke
hint: Vegetable.
explain: An artichoke has a heart but no body.
difficulty: 2

id: 188
question: What has a shoulder but no arm?
answer: road
hint: Driving.
explain: A road has a shoulder (side) but no arm.
difficulty: 2

id: 189
question: What has a heel but no foot?
answer: bread
hint: Baking.
explain: A loaf of bread has a heel (end) but no foot.
difficulty: 2

id: 190
question: What has an arm but no hand?
answer: chair
hint: Furniture.
explain: A chair can have arms but no hands.
difficulty: 1

id: 191
question: What has a head but no eyes?
answer: pin
hint: Sharp object.
explain: A pin has a head but no eyes.
difficulty: 1

id: 192
question: What has a belly but no stomach?
answer: ship
hint: Sailing.
explain: A ship has a belly (hull) but no stomach.
difficulty: 2

id: 193
question: What has a face but no mouth?
answer: clock
hint: Tells time.
explain: A clock has a face but no mouth.
difficulty: 1

id: 194
question: What has veins but no blood?
answer: leaf
hint: Nature.
explain: A leaf has veins for sap but no blood.
difficulty: 1

id: 195
question: What has a neck but no throat?
answer: bottle
hint: Container.
explain: A bottle has a neck but no throat.
difficulty: 1

id: 196
question: What has eyes but cannot see?
answer: potato
hint: Vegetable.
explain: A potato has eyes (sprouts) but can't see.
difficulty: 1

id: 197
question: What has hands but no arms?
answer: clock
hint: Time.
explain: A clock has hands but no arms.
difficulty: 1

id: 198
question: What has a foot but no toes?
answer: ruler
hint: Measurement.
explain: A ruler has a foot (12 inches) but no toes.
difficulty: 2

id: 199
question: What has a lid but no container?
answer: eyelid
hint: Body part.
explain: An eyelid is a lid for your eye.
difficulty: 2

id: 200
question: What has a bridge but no water?
answer: nose
hint: Face.
explain: Your nose has a bridge but no water.
difficulty: 1

id: 201
question: What 5-letter word becomes shorter when you add two letters to it?
answer: short
hint: Think about the word.
explain: Short + er = shorter.
difficulty: 2

id: 202
question: What word is pronounced the same if you take away four of its five letters?
answer: queue
hint: Waiting in line.
explain: Queue sounds like Q even with four letters removed.
difficulty: 2

id: 203
question: What begins with an E and ends with an E but only has one letter?
answer: envelope
hint: Mail.
explain: An envelope begins and ends with E and contains one letter.
difficulty: 1

id: 204
question: What word contains all 26 letters?
answer: alphabet
hint: A to Z.
explain: The word alphabet refers to all letters.
difficulty: 1

id: 205
question: What starts with a T, ends with a T, and has T in it?
answer: teapot
hint: Hot drink.
explain: Teapot starts with T, ends with T, contains tea.
difficulty: 1

id: 206
question: Forward I am heavy, but backward I am not. What am I?
answer: ton
hint: Weight.
explain: Ton is heavy, backwards it's 'not'.
difficulty: 2

id: 207
question: What seven-letter word contains thousands of letters?
answer: mailbox
hint: Post office.
explain: A mailbox contains thousands of letters over time.
difficulty: 1

id: 208
question: What happens once in a lifetime, twice in a moment, but never in a hundred years?
answer: letter M
hint: Count letters.
explain: M appears once in lifetime, twice in moment.
difficulty: 2

id: 209
question: What word becomes shorter when you add two letters?
answer: short
hint: Length.
explain: Short + er = shorter.
difficulty: 1

id: 210
question: What can you spell backwards that is also a word?
answer: lots of words
hint: Many examples.
explain: Words like 'live' backwards is 'evil', 'raw' is 'war'.
difficulty: 2

id: 211
question: What three-letter word starts with gas?
answer: car
hint: Transportation.
explain: A car starts with gas (fuel) and is a three-letter word.
difficulty: 1

id: 212
question: What runs around the yard without moving?
answer: fence
hint: Property line.
explain: A fence goes around without moving.
difficulty: 1

id: 213
question: What has four eyes but can't see?
answer: Mississippi
hint: US state.
explain: Mississippi has four letter i's (eyes).
difficulty: 1

id: 214
question: What word looks the same upside down and backwards?
answer: SWIMS
hint: Water activity.
explain: SWIMS reads the same upside down and backwards.
difficulty: 2

id: 215
question: What letter comes next: O, T, T, F, F, S, S, E, N?
answer: T
hint: Count.
explain: One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten.
difficulty: 2

id: 216
question: What has four letters, sometimes has nine, but never has five?
answer: the word count
hint: Word length.
explain: The word 'four' has 4 letters, 'sometimes' has 9.
difficulty: 2

id: 217
question: What is the longest word in the dictionary?
answer: smiles
hint: Between S's.
explain: Smiles has a mile between the two S's.
difficulty: 1

id: 218
question: What is seen in the middle of March and April?
answer: letter R
hint: Spelling.
explain: The letter R is in the middle of March and April.
difficulty: 1

id: 219
question: What comes down but never goes up?
answer: rain
hint: Weather.
explain: Rain falls from clouds.
difficulty: 1

id: 220
question: What goes up but never comes down?
answer: age
hint: Getting older.
explain: Your age only increases.
difficulty: 1

id: 221
question: I am an odd number. Take away a letter and I become even. What number am I?
answer: seven
hint: Spelling.
explain: Seven minus 's' = even.
difficulty: 2

id: 222
question: What word contains 26 letters but only has three syllables?
answer: alphabet
hint: ABC.
explain: The word alphabet has 26 letters referred to.
difficulty: 1

id: 223
question: What starts with P, ends with E, and has thousands of letters?
answer: post office
hint: Mail.
explain: Post office starts with P, ends with E, contains letters.
difficulty: 1

id: 224
question: What has to be broken before you can use it?
answer: egg
hint: Breakfast.
explain: Eggs must be broken to use.
difficulty: 1

id: 225
question: What belongs to you but others use it more?
answer: name
hint: Identity.
explain: Your name is used more by others.
difficulty: 1

id: 226
question: What can fill a room but takes up no space?
answer: light
hint: Brightness.
explain: Light fills a room without taking space.
difficulty: 1

id: 227
question: What can you catch but not throw?
answer: cold
hint: Illness.
explain: You can catch a cold but not throw it.
difficulty: 1

id: 228
question: What gets sharper the more you use it?
answer: brain
hint: Thinking.
explain: Your brain gets sharper with learning.
difficulty: 1

id: 229
question: What can you hold without ever touching?
answer: conversation
hint: Talking.
explain: You hold a conversation without touching it.
difficulty: 2

id: 230
question: What breaks when you say its name?
answer: silence
hint: Quiet.
explain: Saying 'silence' breaks the silence.
difficulty: 1

id: 231
question: What gets wetter the more it dries?
answer: towel
hint: Bathroom.
explain: A towel gets wet while drying you.
difficulty: 1

id: 232
question: What can you break without touching?
answer: promise
hint: Commitment.
explain: A promise can be broken without touch.
difficulty: 1

id: 233
question: What can run but never walks?
answer: water
hint: Liquid.
explain: Water runs (flows) but doesn't walk.
difficulty: 1

id: 234
question: What has a bed but never sleeps?
answer: river
hint: Nature.
explain: A river has a riverbed but never sleeps.
difficulty: 1

id: 235
question: What has a bank but no money?
answer: river
hint: Water.
explain: A river has banks but no money.
difficulty: 1

id: 236
question: What has a bottom at the top?
answer: legs
hint: Body.
explain: Your bottom is at the top of your legs.
difficulty: 1

id: 237
question: What has a ring but no finger?
answer: phone
hint: Calling.
explain: A phone rings but has no finger.
difficulty: 1

id: 238
question: What has a face but no eyes?
answer: clock
hint: Time.
explain: A clock has a face but no eyes.
difficulty: 1

id: 239
question: What has hands but no arms?
answer: clock
hint: Telling time.
explain: A clock has hands but no arms.
difficulty: 1

id: 240
question: What has teeth but can't bite?
answer: comb
hint: Hair.
explain: A comb has teeth but can't bite.
difficulty: 1

id: 241
question: What has a tongue but can't speak?
answer: shoe
hint: Footwear.
explain: A shoe has a tongue but can't speak.
difficulty: 1

id: 242
question: What has a neck but no head?
answer: bottle
hint: Drink container.
explain: A bottle has a neck but no head.
difficulty: 1

id: 243
question: What has ears but can't hear?
answer: corn
hint: Food.
explain: Corn has ears but can't hear.
difficulty: 1

id: 244
question: What has an eye but can't see?
answer: needle
hint: Sewing.
explain: A needle has an eye but can't see.
difficulty: 1

id: 245
question: What has a head and tail but no body?
answer: coin
hint: Money.
explain: A coin has head and tail but no body.
difficulty: 1

id: 246
question: What has a spine but no bones?
answer: book
hint: Reading.
explain: A book has a spine but no bones.
difficulty: 1

id: 247
question: What has leaves but no branches?
answer: book
hint: Pages.
explain: A book has leaves (pages) but no branches.
difficulty: 1

id: 248
question: What has a thumb but no fingers?
answer: mittens
hint: Gloves.
explain: Mittens have a thumb but no separate fingers.
difficulty: 1

id: 249
question: What has a heart but no other organs?
answer: deck of cards
hint: Games.
explain: Cards have hearts but no organs.
difficulty: 1

id: 250
question: What building has the most stories?
answer: library
hint: Books.
explain: A library has the most stories (books).
difficulty: 1

id: 251
question: I speak without a mouth and hear without ears. I have no body, but I come alive with the wind. What am I?
answer: echo
hint: Sound.
explain: An echo has no body but repeats sounds.
difficulty: 2

id: 252
question: The more of me there is, the less you see. What am I?
answer: darkness
hint: Night.
explain: More darkness means less visibility.
difficulty: 1

id: 253
question: I have cities, but no houses. I have mountains, but no trees. I have water, but no fish. What am I?
answer: map
hint: Navigation.
explain: A map shows features without the real things.
difficulty: 1

id: 254
question: I am always hungry, I must always be fed. The finger I touch, will soon turn red. What am I?
answer: fire
hint: Hot.
explain: Fire consumes fuel and burns what it touches.
difficulty: 1

id: 255
question: The more you take, the more you leave behind. What are they?
answer: footsteps
hint: Walking.
explain: Taking steps leaves footsteps behind.
difficulty: 1

id: 256
question: I have keys but no locks. I have space but no room. You can enter but can't go inside. What am I?
answer: keyboard
hint: Computer.
explain: A keyboard has keys, space bar, enter key.
difficulty: 1

id: 257
question: What can travel around the world while staying in one corner?
answer: stamp
hint: Mail.
explain: A stamp stays in a corner of an envelope.
difficulty: 1

id: 258
question: What has a head and a tail but no body?
answer: coin
hint: Currency.
explain: A coin has heads and tails sides.
difficulty: 1

id: 259
question: What kind of room has no doors or windows?
answer: mushroom
hint: Fungus.
explain: A mushroom sounds like a room but isn't.
difficulty: 1

id: 260
question: What can you catch but not throw?
answer: cold
hint: Sick.
explain: You catch a cold but can't throw it.
difficulty: 1

id: 261
question: What gets broken without being held?
answer: promise
hint: Word.
explain: A promise can be broken without touch.
difficulty: 1

id: 262
question: What begins with T, ends with T, and has T in it?
answer: teapot
hint: Drink.
explain: Teapot begins/ends with T, contains tea.
difficulty: 1

id: 263
question: What can you hold in your right hand but never in your left hand?
answer: left hand
hint: Your body.
explain: Your left hand can't hold itself.
difficulty: 1

id: 264
question: What month has 28 days?
answer: all months
hint: Calendar.
explain: All months have at least 28 days.
difficulty: 1

id: 265
question: What goes up but never comes down?
answer: age
hint: Time.
explain: Age only increases.
difficulty: 1

id: 266
question: What gets sharper the more you use it?
answer: brain
hint: Thinking.
explain: Your brain improves with use.
difficulty: 1

id: 267
question: What is full of holes but still holds water?
answer: sponge
hint: Cleaning.
explain: Sponges have holes but absorb water.
difficulty: 1

id: 268
question: What has a neck but no head?
answer: bottle
hint: Container.
explain: Bottles have necks but no heads.
difficulty: 1

id: 269
question: What has many keys but can't open locks?
answer: piano
hint: Music.
explain: Pianos have keys but don't unlock.
difficulty: 1

id: 270
question: What runs but never walks?
answer: water
hint: Liquid.
explain: Water runs (flows) but doesn't walk.
difficulty: 1

id: 271
question: What has legs but cannot walk?
answer: table
hint: Furniture.
explain: Tables have legs but can't walk.
difficulty: 1

id: 272
question: What has hands but can't clap?
answer: clock
hint: Time.
explain: Clocks have hands but can't clap.
difficulty: 1

id: 273
question: What has teeth but can't bite?
answer: comb
hint: Hair tool.
explain: Combs have teeth but can't bite.
difficulty: 1

id: 274
question: What has an eye but can't see?
answer: needle
hint: Sewing.
explain: Needles have eyes but can't see.
difficulty: 1

id: 275
question: What has ears but can't hear?
answer: corn
hint: Vegetable.
explain: Corn has ears but can't hear.
difficulty: 1

id: 276
question: What has a tongue but can't speak?
answer: shoe
hint: Footwear.
explain: Shoes have tongues but can't speak.
difficulty: 1

id: 277
question: What has a face but no eyes?
answer: clock
hint: Timepiece.
explain: Clocks have faces but no eyes.
difficulty: 1

id: 278
question: What has a spine but no bones?
answer: book
hint: Reading.
explain: Books have spines but no bones.
difficulty: 1

id: 279
question: What has words but never speaks?
answer: book
hint: Pages.
explain: Books have words but don't speak.
difficulty: 1

id: 280
question: What has a ring but no finger?
answer: phone
hint: Call.
explain: Phones ring but have no fingers.
difficulty: 1

id: 281
question: What comes down but never goes up?
answer: rain
hint: Weather.
explain: Rain falls but doesn't go back up.
difficulty: 1

id: 282
question: What belongs to you but others use more?
answer: name
hint: Identity.
explain: Others say your name more than you.
difficulty: 1

id: 283
question: What can fill a room but takes no space?
answer: light
hint: Bright.
explain: Light fills rooms without taking space.
difficulty: 1

id: 284
question: What breaks when you name it?
answer: silence
hint: Quiet.
explain: Saying silence breaks it.
difficulty: 1

id: 285
question: What gets wetter as it dries?
answer: towel
hint: Bath.
explain: Towels get wet while drying you.
difficulty: 1

id: 286
question: What has a heart but no organs?
answer: deck of cards
hint: Playing.
explain: Cards have hearts but no organs.
difficulty: 1

id: 287
question: What kind of tree fits in your hand?
answer: palm
hint: Hand part.
explain: Your palm and a palm tree share a name.
difficulty: 1

id: 288
question: What building has most stories?
answer: library
hint: Books.
explain: Libraries have the most stories (books).
difficulty: 1

id: 289
question: What has a bed but never sleeps?
answer: river
hint: Nature.
explain: Rivers have beds but don't sleep.
difficulty: 1

id: 290
question: What has a bank but no money?
answer: river
hint: Water.
explain: Rivers have banks but no currency.
difficulty: 1

id: 291
question: What is always coming but never arrives?
answer: tomorrow
hint: Time.
explain: Tomorrow is always a day away.
difficulty: 1

id: 292
question: What has a bottom at the top?
answer: legs
hint: Body.
explain: Your bottom is at the top of your legs.
difficulty: 1

id: 293
question: What tastes better than it smells?
answer: tongue
hint: Mouth.
explain: Your tongue tastes but itself smells.
difficulty: 2

id: 294
question: What is so fragile saying its name breaks it?
answer: silence
hint: Quiet.
explain: Saying silence breaks the silence.
difficulty: 1

id: 295
question: What kind of cup can't hold water?
answer: cupcake
hint: Treat.
explain: Cupcakes are cakes not cups.
difficulty: 1

id: 296
question: What kind of dog never bites?
answer: hot dog
hint: Food.
explain: Hot dogs are food not dogs.
difficulty: 1

id: 297
question: What kind of coat has no sleeves?
answer: coat of paint
hint: Painting.
explain: A coat of paint covers but has no sleeves.
difficulty: 1

id: 298
question: What goes through towns but never moves?
answer: road
hint: Travel.
explain: Roads go through towns but stay still.
difficulty: 1

id: 299
question: What has many keys but unlocks nothing?
answer: keyboard
hint: Typing.
explain: Keyboards have keys but don't unlock.
difficulty: 1

id: 300
question: What has to be broken before use?
answer: egg
hint: Food.
explain: Eggs must be broken to use.
difficulty: 1

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)