続編
元々郵便物や荷物に簡単に磔られる簡易シールプリンタを買ったのでした。
自分用だよ?シール貼ってあるし(前回)。
はいはい
一般にバーコードのチェックサム計算するのって大変ですよね。関数電卓で計算すると何回も間違えてしまう。
なので自家需要から一発で生成できるのを書きました。
自家用原本の公開用抄本のコピペ
#!/usr/bin/ruby
#
# [ The "Lazy Address Box" ] 公開版
#
# -- Semi-handcrafted by asaone --
#
# 経緯や開発状況:
# 2026年6月18日 例のやつに住所印刷を果たしていただこうかと。
# 2026年6月20日 前作を基にRuby がもうちょい前に出てくるようにしようかと。
# 2026年6月21日 一生懸命作ったかと。
# 2026年6月22日 雑な機能削除して公開版(v1.0)もできたかと。
#
# 使用方法は下記取説のとおりなんとなく。
#
# 取説:
# =================================================
# 0. postal_code とpostal_mach を変える(その2点だけで網羅的に居所が特定できるという)。
#
# 1. $ which ruby は/usr/bin/ruby でありファイル文字列の起点を成す。ファイル全体は./lazyab.rb と定義。
#
# 2. $ chmod u+x ./lazyab.rb を実行する。
#
# 3. $ ./lazyab.rbを実行する。
#
# 4. データやエラーが得られると考えられる。
# =================================================
# :取説以上
#
# 郵便番号数字7桁
postal_code ='1820021'.to_s
# 丁目以降の番地等。長屋なら 1-2-30-404 とか
postal_mach ='1-5-1'.to_s
def kigou_to_int(input_atai)
henkan_table = %w(0 1 2 3 4 5 6 7 8 9 - A B C D E F G H)
index = henkan_table.index(input_atai.to_s)
if index
index
else
puts '未対応(仕様)の文字が混在しておりませんこと?。'
exit!
end
end
def intlike_to_kigou(input_int)
# 0から18に対応する記号をテーブル(配列)として定義
henkan_table = %w(0 1 2 3 4 5 6 7 8 9 - A B C D E F G H)
# 入力された値を整数(インデックス)に変換
index = input_int.to_i
# 0〜18の範囲内なら、テーブルから対応する文字を画面に出力
if index.between?(0, 18)
henkan_table[index]
else
puts 'これ、難しいエラーです。'
exit!
end
end
postal_bar = []
postal_bar[0] = '('.to_s
i=0
j=0
(1..7).each do |i|
postal_bar[i] = postal_code[i-1]
end
(8..20).each do |j|
if ( postal_mach[j-8] == nil ) then
postal_bar[j] = "D".to_s
else
postal_bar[j] = postal_mach[j-8]
end
end
# postal_bar[]について:
# 21桁目[20] までをデータかDで埋めた。1桁目[0]は( 。
# チェックサム桁の22桁目[21] を計算。
k=0
postal_goukei = 0.to_i
(1..20).each do |k|
postal_goukei += kigou_to_int( postal_bar[k].to_s )
end
postal_yuka = 0
csum_kigou = 0
if ( postal_goukei.to_i.modulo(19) == 0.to_i ) then
csum_kigou = 0.to_i
else
postal_yuka = postal_goukei.div(19).to_i * 19.to_i
csum_kigou = 19.to_i + postal_yuka.to_i - postal_goukei.to_i
end
postal_bar << intlike_to_kigou("#{csum_kigou}")
# 22桁目(チェックサム)が定まった。
postal_bar[22]=")"
# 23桁目の) 。
m=0
# 一丁上がり。
(0..22).each do |m|
print( postal_bar[m] )
end
puts()
はいはい
はい。
