Skip to content

Instantly share code, notes, and snippets.

@eggplants
Last active January 7, 2024 20:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eggplants/8fc00fb7efa01d252204e801ce3f6e58 to your computer and use it in GitHub Desktop.
Save eggplants/8fc00fb7efa01d252204e801ce3f6e58 to your computer and use it in GitHub Desktop.
全俳句データベース https://horicun.moo.jp/contents/haiku/ in Ruby
#!/usr/bin/env ruby
def get_haiku n
len = 17
# Ver 1:
# https://horicun.moo.jp/contents/haiku/random.html?number_search=1
hiragana = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょゎっゐゑーゔん"
# Ver 2:
# https://horicun.moo.jp/contents/haiku2/random.html?number_search=1
# hiragana = [
# "あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ",
# "さ", "し", "す", "せ", "そ", "た", "ち", "つ", "て", "と",
# "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", "へ", "ほ",
# "ま", "み", "む", "め", "も", "や", "ゆ", "よ",
# "ら", "り", "る", "れ", "ろ", "わ", "を",
# "が", "ぎ", "ぐ", "げ", "ご", "ざ", "じ", "ず", "ぜ", "ぞ",
# "だ", "ぢ", "づ", "で", "ど", "ば", "び", "ぶ", "べ", "ぼ",
# "ぱ", "ぴ", "ぷ", "ぺ", "ぽ", "っ", "ゐ", "ゑ", "ー", "ゔ",
# "うぃ","うぇ","うぉ","くゎ","ぐゎ",
# "しぇ","ちぇ","てぃ","とぅ",
# "じぇ","ぢぇ","でぃ","でゅ","どぅ",
# "ふぁ","ふぃ","ふぇ","ふぉ",
# "ゔぁ","ゔぃ","ゔぇ","ゔぉ",
# "きゃ","きゅ","きょ","しゃ","しゅ","しょ",
# "ちゃ","ちゅ","ちょ","にゃ","にゅ","にょ",
# "みゃ","みゅ","みょ","ひゃ","ひゅ","ひょ",
# "りゃ","りゅ","りょ","ぎゃ","ぎゅ","ぎょ",
# "じゃ","じゅ","じょ","ぢゃ","ぢゅ","ぢょ",
# "びゃ","びゅ","びょ","ぴゃ","ぴゅ","ぴょ", "ん"
# ]
valid_range = 0 ... hiragana.size ** len
raise ArgumentError.new n unless valid_range.include? n-=1
len.times.map do
next ?あ if n.zero?
n, mod = n.divmod hiragana.size
hiragana[mod]
end.reverse.join
end
if __FILE__ == $PROGRAM_NAME
if ARGV.size.positive?
ARGV.map(&:to_i).each { puts "#{_1}: #{get_haiku _1}" }
return
end
puts "=== Example ==="
# [0, 85**17+1]
[1, 85, 86, 8121862514056854736084710984000, 85**17].each do
puts "#{_1}: #{get_haiku _1}"
end
end
@eggplants
Copy link
Author

$ ./get_haiku.rb
=== Example ===
1: あああああああああああああああああ
85: ああああああああああああああああん
86: あああああああああああああああいあ
8121862514056854736084710984000: いくーーーーーーーーーーーーーーっ
631134233006543551770782470703125: んんんんんんんんんんんんんんんんん

$ ./get_haiku.rb 1 1145141919810 77016092317948049706681803472219
1: あああああああああああああああああ
1145141919810: ああああああああああええくふみがこ
77016092317948049706681803472219: さみだれをあつめてはやしもがみがわ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment