Skip to content

Instantly share code, notes, and snippets.

@yantene
Created June 22, 2017 08:29
Show Gist options
  • Save yantene/1fd520b63a83fc166326b35149f63b66 to your computer and use it in GitHub Desktop.
Save yantene/1fd520b63a83fc166326b35149f63b66 to your computer and use it in GitHub Desktop.
class Array
def flat_pack
self.flat_map { |c| Range === c ? c.to_a : c }.map { |c| [c].pack('U*') }
end
end
Hentaigana = {
'あ' => [0x1b002..0x1b005].flat_pack,
'い' => [0x1b006..0x1b009].flat_pack,
'う' => [0x1b00a..0x1b00e].flat_pack,
'え' => [0x1b00f..0x1b013].flat_pack,
'お' => [0x1b014..0x1b016].flat_pack,
'か' => [0x1b017..0x1b022].flat_pack,
'き' => [0x1b023..0x1b02a, 0x1b03b].flat_pack,
'く' => [0x1b02b..0x1b031].flat_pack,
'け' => [0x1b032..0x1b037, 0x1b022].flat_pack,
'こ' => [0x1b038..0x1b03b, 0x1b098].flat_pack,
'さ' => [0x1b03c..0x1b043].flat_pack,
'し' => [0x1b044..0x1b049].flat_pack,
'す' => [0x1b04a..0x1b051].flat_pack,
'せ' => [0x1b052..0x1b056].flat_pack,
'そ' => [0x1b057..0x1b05d].flat_pack,
'た' => [0x1b05e..0x1b061].flat_pack,
'ち' => [0x1b062..0x1b068].flat_pack,
'つ' => [0x1b069..0x1b06d].flat_pack,
'て' => [0x1b06e..0x1b076, 0x1b08e].flat_pack,
'と' => [0x1b077..0x1b07d, 0x1b06d].flat_pack,
'な' => [0x1b07e..0x1b086].flat_pack,
'に' => [0x1b087..0x1b08e].flat_pack,
'ぬ' => [0x1b08f..0x1b091].flat_pack,
'ね' => [0x1b092..0x1b098].flat_pack,
'の' => [0x1b099..0x1b09d].flat_pack,
'は' => [0x1b09e..0x1b0a8].flat_pack,
'ひ' => [0x1b0a9..0x1b0af].flat_pack,
'ふ' => [0x1b0b0..0x1b0b2].flat_pack,
'へ' => [0x1b0b3..0x1b0b9].flat_pack,
'ほ' => [0x1b0ba..0x1b0c1].flat_pack,
'ま' => [0x1b0c2..0x1b0c8, 0x1b0d6].flat_pack,
'み' => [0x1b0c9..0x1b0cf].flat_pack,
'む' => [0x1b0d0..0x1b0d3, 0x1b11d..0x1b11e].flat_pack,
'め' => [0x1b0d4..0x1b0d6].flat_pack,
'も' => [0x1b0d7..0x1b0dc, 0x1b11d..0x1b11e].flat_pack,
'や' => [0x1b0dd..0x1b0e2].flat_pack,
'ゆ' => [0x1b0e3..0x1b0e6].flat_pack,
'よ' => [0x1b0e7..0x1b0ec, 0x1b0e2].flat_pack,
'ら' => [0x1b0ed..0x1b0f0, 0x1b07d].flat_pack,
'り' => [0x1b0f1..0x1b0f7].flat_pack,
'る' => [0x1b0f8..0x1b0fd].flat_pack,
'れ' => [0x1b0fe..0x1b101].flat_pack,
'ろ' => [0x1b102..0x1b107].flat_pack,
'わ' => [0x1b108..0x1b10c].flat_pack,
'ゐ' => [0x1b10d..0x1b111].flat_pack,
'ゑ' => [0x1b112..0x1b115].flat_pack,
'を' => [0x1b116..0x1b11c, 0x1b005].flat_pack,
'ん' => [0x1b11d..0x1b11e].flat_pack
}
puts gets.chars.map { |c| Hentaigana[c]&.sample || c }.join
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment