"이치 탄다 에- (1 탄다 A)"에서 "치탄다 에어"까지를 생성한다
10009 단어 Groovy
「이치탄다 에-, 니탄다 비-,… 트윗이 아침부터 돌아 왔기 때문에 정말로 그렇게 될지 프로그램을 달린 결과 ぃ tp : ///와 ぃt피 c. 이 m/b8q90b
htps : // 라고 해서 r. 이 m/_ 곰팡이 x/s 타츠 s/263229881435971584
「나, 신경이 쓰입니다!」라고 하는 것으로, Groovy로 써 보았습니다. 정책은 다음과 같이 했습니다.
eachWithIndex
를 사용하여 각 배열의 인덱스로 만들었습니다.def alphabetList = ["えー", "びー", "しー", "でぃー", "いー", "えふ", "じー", "えいち", "あい", "じぇい", "けー", "える", "えむ", "えぬ", "おー", "ぴー", "きゅー", "あーる", "えす", "てぃー", "ゆー", "ぶい", "だぶりゅー", "えっくす", "わい", "ぜっと"]
def range = 1..1000
range.eachWithIndex {num, i->
println "${arabicNumToKanjiNum(num)}反田${alphabetList[i%alphabetList.size()]}"
}
// アラビア数字を漢数字に変換します
def arabicNumToKanjiNum(long num){
def kanjiNumUnit = ["", "万", "億", "兆", "京"]
// 4桁ごとのブロックの数
int blockIndex = num.toString().size() / 4
def kanji = ""
while (blockIndex >= 0) {
// ブロックの値のみを残す
int value = num / (10000 ** blockIndex)
int blockNum = value % 10000
// ブロックの値が1以上のとき
if (blockNum >= 1) {
kanji = "${kanji}${arabicNumToKanjiNumSub(blockNum)}${kanjiNumUnit[blockIndex]}"
}
blockIndex--
}
kanji
}
// 一万未満のアラビア数字を漢数字に変換します
def arabicNumToKanjiNumSub(int num){
def kanjiNum = ["", "一", "二", "三", "四", "五", "六", "七", "八", "九" ]
def kanjiNumSubUnit = ["", "十", "百", "千"]
// 数字の桁数
int digitIndex = num.toString().size() - 1
def kanji = ""
while (digitIndex >= 0) {
// 指定した桁の値のみを残す
int value = num / (10 ** digitIndex)
int numIndex = value % 10
// 桁の数字が2以上(「一百」などを避ける)
// または1桁目の数字(1桁目は「一」を表示)の場合
if (numIndex >= 2 || digitIndex == 0) { //
// 漢数字を追加
kanji = "${kanji}${kanjiNum[numIndex]}"
}
// 桁の数字が1以上のとき
if(numIndex >= 1) {
// 百などを表示
kanji = "${kanji}${kanjiNumSubUnit[digitIndex]}"
}
digitIndex--
}
kanji
}
Groovy 코드는 파일에 저장하고
groovy
명령으로 실행해도 좋지만 GroovyConsole에 붙여 넣으면 쉽게 실행할 수 있습니다. 실행 결과는 「치탄다 에루」가 되었습니다!Reference
이 문제에 관하여("이치 탄다 에- (1 탄다 A)"에서 "치탄다 에어"까지를 생성한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rsato/items/a0013f35f731ff6b494f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)