平成の次の元号を99.9999%当てる最も簡単な方法


"平成の次の元号は何?"

この記事はQiita史上、最もテキトーな自然言語処理です。

条件

使用言語: C++11
文字コード: Shift-Jis

Shift-Jisを選んだ理由

はっきり言って"Shift-Jis"は好きじゃないです。
世界中の文字が使える"UTF-8"が好きです。

しかし、漢字のみを処理するなら
Shift-Jis2バイトのみで処理できるため
実装が凄まじく楽です。(UTF-8 は 3バイト必要)

なので、Shift-Jisを使います。

C++11で実装

EraName.hpp
#pragma once
#include <cstdint>
#include <iostream>

namespace era {

    void eraName2(char* const, const bool);
    void eraName1(char* const str_, const bool on_ = true) {
        const std::size_t size = (on_) ? (std::size_t)0 : (std::size_t)2;
        for (std::int_fast32_t i{ 0x88 }; i < 0xa0; ++i) {
            str_[size] = (char)i;
            eraName2(str_, on_);
        }
    }

    void eraName2(char* const str_, const bool on_) {
        const std::size_t size = (on_) ? (std::size_t)1 : (std::size_t)3;
        for (std::int_fast32_t i{ 0x40 }; i < 0xfd; ++i) {
            str_[size] = (char)i;
            std::cout << str_;
            if (on_) eraName1(str_, false);
            else std::cout << ' ';
        }
    }

    void printEraName() {
        char str[5]{};
        eraName1(str);
    }
}
Source.cpp
#include "EraName.hpp"
int main() {
    era::printEraName();
    return 0;
}

C99で実装(C言語)

EraName.h
#pragma once
#include <stdint.h>
#include <stdio.h>

void eraName2(char* const, const int);
void eraName1(char* const str_, const int on_) {
    const size_t size = (on_ == 1) ? (size_t)0 : (size_t)2;
    for (int_fast32_t i = 0x88; i < 0xa0; ++i) {
        str_[size] = (char)i;
        eraName2(str_, on_);
    }
}

void eraName2(char* const str_, const int on_) {
    const size_t size = (on_ == 1) ? (size_t)1 : (size_t)3;
    for (int_fast32_t i = 0x40; i < 0xfd; ++i) {
        str_[size] = (char)i;
        printf("%s", str_);
        if (on_) eraName1(str_, 0);
        else printf(" ");
    }
}

void printEraName(void) {
    char str[5] = {};
    eraName1(str, 1);
}
Source.c
#include "EraName.h"

int main(void) {
    printEraName();
    return 0;
}

出力結果

とてつもなく長いので一部のみ貼り付けます。

蓮連 蓮錬 蓮呂 蓮魯 蓮櫓 蓮炉 蓮賂 蓮路 蓮露 蓮労 蓮婁 蓮廊 蓮弄 蓮朗 蓮楼 蓮榔 蓮浪 蓮漏 蓮牢 蓮狼 蓮篭 蓮老 蓮聾 蓮蝋 蓮郎 蓮六 蓮麓 蓮禄 蓮肋 蓮録 蓮論 蓮倭 蓮和 蓮話 蓮歪 蓮賄 蓮脇 蓮惑 蓮枠 蓮鷲 蓮亙 蓮亘 蓮鰐 蓮詫 蓮藁 蓮 蕨 蓮椀 蓮湾 蓮碗 蓮腕 蓮弌 蓮丐 蓮丕 蓮个 蓮丱 蓮丶 蓮丼 蓮丿 蓮乂 蓮乖 蓮乘 蓮亂 蓮亅 蓮豫 蓮亊 蓮舒 蓮弍 蓮于 蓮亞 蓮亟 蓮亠 蓮亢 蓮亰 蓮亳 蓮亶 蓮从 蓮仍 蓮仄 蓮仆 蓮仂 蓮仗 蓮仞 蓮仭 蓮仟 蓮价 蓮伉 蓮佚 蓮估 蓮佛 蓮佝 蓮佗 蓮佇 蓮佶 蓮侈 蓮侏 蓮侘 蓮佻 蓮佩 蓮佰 蓮侑 蓮佯 蓮來 蓮侖 蓮儘 蓮俔 蓮俟 蓮俎 蓮俘 蓮俛 蓮俑 蓮俚 蓮俐 蓮俤 蓮俥 蓮倚 蓮倨 蓮倔 蓮倪 蓮倥 蓮倅 蓮伜 蓮俶 蓮倡 蓮倩 蓮倬 蓮俾 蓮俯 蓮們 蓮倆 蓮偃 蓮假 蓮會 蓮偕 蓮偐 蓮偈 蓮做 蓮偖 蓮偬 蓮偸 蓮傀 蓮傚 蓮傅 蓮傴 蓮傲 連傲連蓮 連連 連錬 連呂 連魯 連櫓 連炉 連賂 連路 連露 連労 連婁 連廊 連弄 連朗 連楼 連榔 連浪 連漏 連牢 連狼 連篭 連老 連聾 連蝋 連郎 連六 連麓 連禄 連肋 連録 連論 連倭 連和 連話 連歪 連賄 連脇 連惑 連枠 連鷲 連亙 連亘 連鰐 連 詫 連藁 連蕨 連椀 連湾 連碗 連腕 連弌 連丐 連丕 連个 連丱 連丶 連丼 連丿 連乂 連乖 連乘 連亂 連亅 連豫 連亊 連舒 連弍 連于 連亞 連亟 連亠 連亢 連亰 連亳 連亶 連从 連仍 連仄 連仆 連仂 連仗 連仞 連仭 連仟 連价 連伉 連佚 連估 連佛 連佝 連佗 連佇 連佶 連侈 連侏 連侘 連佻 連佩 連佰 連侑 連佯 連來 連侖 連儘 連俔 連俟 連俎 連俘 連俛 連俑 連俚 連俐 連俤 連俥 連倚 連倨 連倔 連倪 連倥 連倅 連伜 連俶 連倡 連倩 連倬 連俾 連俯 連們 連倆 連偃 連假 連會 連偕 連偐 連偈 連做 連偖 連偬 連偸 連傀 連傚 連傅 連傴 連傲 錬傲錬蓮 錬連 錬錬 錬呂 錬魯 錬櫓 錬炉 錬賂 錬路 錬露 錬労 錬婁 錬廊 錬弄 錬朗 錬楼 錬榔 錬浪 錬漏 錬牢 錬狼 錬篭 錬老 錬聾 錬蝋 錬郎 錬六 錬麓 錬禄 錬肋 錬録 錬論 錬倭 錬和 錬話 錬歪 錬賄 錬脇 錬惑 錬枠 錬鷲 錬亙 錬 亘 錬鰐 錬詫 錬藁 錬蕨 錬椀 錬湾 錬碗 錬腕 錬弌 錬丐 錬丕 錬个 錬丱 錬丶 錬丼 錬丿 錬乂 錬乖 錬乘 錬亂 錬亅 錬豫 錬亊 錬舒 錬弍 錬于 錬亞 錬亟 錬亠 錬亢 錬亰 錬亳 錬亶 錬从 錬仍 錬仄 錬仆 錬仂 錬仗 錬仞 錬仭 錬仟 錬价 錬伉 錬佚 錬估 錬佛 錬佝 錬佗 錬佇 錬佶 錬侈 錬侏 錬侘 錬佻 錬佩 錬佰 錬侑 錬佯 錬來 錬侖 錬儘 錬俔 錬俟 錬俎 錬俘 錬俛 錬俑 錬俚 錬俐 錬俤 錬俥 錬倚 錬倨 錬倔 錬倪 錬倥 錬倅 錬伜 錬俶 錬倡 錬倩 錬倬 錬俾 錬俯 錬們 錬倆 錬偃 錬假 錬會 錬偕 錬偐 錬偈 錬做 錬偖 錬偬 錬偸 錬傀 錬傚 錬傅 錬傴 錬傲 呂傲呂蓮 呂連 呂錬 呂呂 呂魯 呂櫓 呂炉 呂賂 呂路 呂露 呂労 呂婁 呂廊 呂弄 呂朗 呂楼 呂榔 呂浪 呂漏 呂牢 呂狼 呂篭 呂老 呂聾 呂蝋 呂郎 呂六 呂麓 呂禄 呂肋 呂録 呂論 呂倭 呂和 呂話 呂歪 呂賄 呂脇 呂惑 呂枠 呂 鷲 呂亙 呂亘 呂鰐 呂詫 呂藁 呂蕨 呂椀 呂湾 呂碗 呂腕 呂弌 呂丐 呂丕 呂个 呂丱 呂丶 呂丼 呂丿 呂乂 呂乖 呂乘 呂亂 呂亅 呂豫 呂亊 呂舒 呂弍 呂于 呂亞 呂亟 呂亠 呂亢 呂亰 呂亳 呂亶 呂从 呂仍 呂仄 呂仆 呂仂 呂仗 呂仞 呂仭 呂仟 呂价 呂伉 呂佚 呂估 呂佛 呂佝 呂佗 呂佇 呂佶 呂侈 呂侏 呂侘 呂佻 呂佩 呂佰 呂侑 呂佯 呂來 呂侖 呂儘 呂俔 呂俟 呂俎 呂俘 呂俛 呂俑 呂俚 呂俐 呂俤 呂俥 呂倚 呂倨 呂倔 呂倪 呂倥 呂倅 呂伜 呂俶 呂倡 呂倩 呂倬 呂俾 呂俯 呂們 呂倆 呂偃 呂假 呂會 呂偕 呂偐 呂偈 呂做 呂偖 呂偬 呂偸 呂傀 呂傚 呂傅 呂傴 呂傲 魯傲魯蓮 魯連 魯錬 魯呂 魯魯 魯櫓 魯炉 魯賂 魯路 魯露 魯労 魯婁 魯廊 魯弄 魯朗 魯楼 魯榔 魯浪 魯漏 魯牢 魯狼 魯篭 魯老 魯聾 魯蝋 魯郎 魯六 魯麓 魯禄 魯肋 魯録

このように20579832通りの元号が出力されます。

これであなたも予言者です!

ソースコードのライセンス

These codes are licensed under CC0.