法人番号のチェックデジットの求め方は、法人番号を確認するページにあるチェックデジットの計算リンクから確認できます。
チェックデジットを求めるコード
川口市の法人番号を使ってチェックデジットを求めるコードを書いてみました。
頭ひと桁がチェックデジットなので結果として2
が求められればOKですね。
fun main() { val corporateNumber = "2000020112038" data class Temp(val odd: Int, val even: Int) { fun addOdd(value: Int) = this.copy(odd = odd + value) fun addEven(value: Int) = this.copy(even = even + value) } val checkDigit = corporateNumber .substring(1) .reversed() .foldIndexed(Temp(0, 0)) { index, acc, c -> when ((index + 1) % 2) { 0 -> acc.addOdd(c.toInt()) else -> acc.addEven(c.toInt()) } } .let { (it.odd * 2) + it.even } .let { 9 - (it % 9) } println("checkDigit = ${checkDigit}") }
実行結果
チェックデジットが正しく求められたっぽいことがわかります!