開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 9章(自作メソッドの書き方), 9.5(練習問題)モダンなローマ数字を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
モダンなローマ数字
コード(TextWrangler)
#!/usr/bin/env ruby #encoding: utf-8 def roman_numeral num result = 'M' * (num / 1000) h = (num % 1000) / 100 ten = (num % 100) / 10 one = num % 10 if h == 9 result += 'CM' elsif h == 4 result += 'CD' else result += 'D' * (h / 5) result += 'C' * (h % 5) end if ten == 9 result += 'XC' elsif ten == 4 result += 'XL' else result += 'L' * (ten / 5) result += 'C' * (ten % 5) end if one == 9 result += 'IX' elsif one == 4 result += 'IV' else result += 'V' * (one / 5) result += 'I' * (one % 5) end result end (1..1000).each do |num| puts "#{num}: #{roman_numeral num}" end
入出力結果(Terminal)
$ ruby sample.rb 1: I 2: II 3: III 4: IV 5: V 6: VI 7: VII 8: VIII 9: IX 10: C 11: CI 12: CII 13: CIII 14: CIV 15: CV 16: CVI 17: CVII 18: CVIII 19: CIX 20: CC 21: CCI 22: CCII 23: CCIII 24: CCIV 25: CCV 26: CCVI 27: CCVII 28: CCVIII 29: CCIX 30: CCC 31: CCCI 32: CCCII 33: CCCIII 34: CCCIV 35: CCCV 36: CCCVI 37: CCCVII 38: CCCVIII 39: CCCIX 40: XL 41: XLI 42: XLII 43: XLIII 44: XLIV 45: XLV 46: XLVI 47: XLVII 48: XLVIII 49: XLIX 50: L 51: LI 52: LII 53: LIII 54: LIV 55: LV 56: LVI 57: LVII 58: LVIII 59: LIX 60: LC 61: LCI 62: LCII 63: LCIII 64: LCIV 65: LCV 66: LCVI 67: LCVII 68: LCVIII 69: LCIX 70: LCC 71: LCCI 72: LCCII 73: LCCIII 74: LCCIV 75: LCCV 76: LCCVI 77: LCCVII 78: LCCVIII 79: LCCIX 80: LCCC 81: LCCCI 82: LCCCII 83: LCCCIII 84: LCCCIV 85: LCCCV 86: LCCCVI 87: LCCCVII 88: LCCCVIII 89: LCCCIX 90: XC 91: XCI 92: XCII 93: XCIII 94: XCIV 95: XCV 96: XCVI 97: XCVII 98: XCVIII 99: XCIX 100: C 101: CI 102: CII 103: CIII 104: CIV 105: CV 106: CVI 107: CVII 108: CVIII 109: CIX 110: CC 111: CCI 112: CCII 113: CCIII 114: CCIV 115: CCV 116: CCVI 117: CCVII 118: CCVIII 119: CCIX 120: CCC 121: CCCI 122: CCCII 123: CCCIII 124: CCCIV 125: CCCV 126: CCCVI 127: CCCVII 128: CCCVIII 129: CCCIX 130: CCCC 131: CCCCI 132: CCCCII 133: CCCCIII 134: CCCCIV 135: CCCCV 136: CCCCVI 137: CCCCVII 138: CCCCVIII 139: CCCCIX 140: CXL 141: CXLI 142: CXLII 143: CXLIII 144: CXLIV 145: CXLV 146: CXLVI 147: CXLVII 148: CXLVIII 149: CXLIX 150: CL 151: CLI 152: CLII 153: CLIII 154: CLIV 155: CLV 156: CLVI 157: CLVII 158: CLVIII 159: CLIX 160: CLC 161: CLCI 162: CLCII 163: CLCIII 164: CLCIV 165: CLCV 166: CLCVI 167: CLCVII 168: CLCVIII 169: CLCIX 170: CLCC 171: CLCCI 172: CLCCII 173: CLCCIII 174: CLCCIV 175: CLCCV 176: CLCCVI 177: CLCCVII 178: CLCCVIII 179: CLCCIX 180: CLCCC 181: CLCCCI 182: CLCCCII 183: CLCCCIII 184: CLCCCIV 185: CLCCCV 186: CLCCCVI 187: CLCCCVII 188: CLCCCVIII 189: CLCCCIX 190: CXC 191: CXCI 192: CXCII 193: CXCIII 194: CXCIV 195: CXCV 196: CXCVI 197: CXCVII 198: CXCVIII 199: CXCIX 200: CC 201: CCI 202: CCII 203: CCIII 204: CCIV 205: CCV 206: CCVI 207: CCVII 208: CCVIII 209: CCIX 210: CCC 211: CCCI 212: CCCII 213: CCCIII 214: CCCIV 215: CCCV 216: CCCVI 217: CCCVII 218: CCCVIII 219: CCCIX 220: CCCC 221: CCCCI 222: CCCCII 223: CCCCIII 224: CCCCIV 225: CCCCV 226: CCCCVI 227: CCCCVII 228: CCCCVIII 229: CCCCIX 230: CCCCC 231: CCCCCI 232: CCCCCII 233: CCCCCIII 234: CCCCCIV 235: CCCCCV 236: CCCCCVI 237: CCCCCVII 238: CCCCCVIII 239: CCCCCIX 240: CCXL 241: CCXLI 242: CCXLII 243: CCXLIII 244: CCXLIV 245: CCXLV 246: CCXLVI 247: CCXLVII 248: CCXLVIII 249: CCXLIX 250: CCL 251: CCLI 252: CCLII 253: CCLIII 254: CCLIV 255: CCLV 256: CCLVI 257: CCLVII 258: CCLVIII 259: CCLIX 260: CCLC 261: CCLCI 262: CCLCII 263: CCLCIII 264: CCLCIV 265: CCLCV 266: CCLCVI 267: CCLCVII 268: CCLCVIII 269: CCLCIX 270: CCLCC 271: CCLCCI 272: CCLCCII 273: CCLCCIII 274: CCLCCIV 275: CCLCCV 276: CCLCCVI 277: CCLCCVII 278: CCLCCVIII 279: CCLCCIX 280: CCLCCC 281: CCLCCCI 282: CCLCCCII 283: CCLCCCIII 284: CCLCCCIV 285: CCLCCCV 286: CCLCCCVI 287: CCLCCCVII 288: CCLCCCVIII 289: CCLCCCIX 290: CCXC 291: CCXCI 292: CCXCII 293: CCXCIII 294: CCXCIV 295: CCXCV 296: CCXCVI 297: CCXCVII 298: CCXCVIII 299: CCXCIX 300: CCC 301: CCCI 302: CCCII 303: CCCIII 304: CCCIV 305: CCCV 306: CCCVI 307: CCCVII 308: CCCVIII 309: CCCIX 310: CCCC 311: CCCCI 312: CCCCII 313: CCCCIII 314: CCCCIV 315: CCCCV 316: CCCCVI 317: CCCCVII 318: CCCCVIII 319: CCCCIX 320: CCCCC 321: CCCCCI 322: CCCCCII 323: CCCCCIII 324: CCCCCIV 325: CCCCCV 326: CCCCCVI 327: CCCCCVII 328: CCCCCVIII 329: CCCCCIX 330: CCCCCC 331: CCCCCCI 332: CCCCCCII 333: CCCCCCIII 334: CCCCCCIV 335: CCCCCCV 336: CCCCCCVI 337: CCCCCCVII 338: CCCCCCVIII 339: CCCCCCIX 340: CCCXL 341: CCCXLI 342: CCCXLII 343: CCCXLIII 344: CCCXLIV 345: CCCXLV 346: CCCXLVI 347: CCCXLVII 348: CCCXLVIII 349: CCCXLIX 350: CCCL 351: CCCLI 352: CCCLII 353: CCCLIII 354: CCCLIV 355: CCCLV 356: CCCLVI 357: CCCLVII 358: CCCLVIII 359: CCCLIX 360: CCCLC 361: CCCLCI 362: CCCLCII 363: CCCLCIII 364: CCCLCIV 365: CCCLCV 366: CCCLCVI 367: CCCLCVII 368: CCCLCVIII 369: CCCLCIX 370: CCCLCC 371: CCCLCCI 372: CCCLCCII 373: CCCLCCIII 374: CCCLCCIV 375: CCCLCCV 376: CCCLCCVI 377: CCCLCCVII 378: CCCLCCVIII 379: CCCLCCIX 380: CCCLCCC 381: CCCLCCCI 382: CCCLCCCII 383: CCCLCCCIII 384: CCCLCCCIV 385: CCCLCCCV 386: CCCLCCCVI 387: CCCLCCCVII 388: CCCLCCCVIII 389: CCCLCCCIX 390: CCCXC 391: CCCXCI 392: CCCXCII 393: CCCXCIII 394: CCCXCIV 395: CCCXCV 396: CCCXCVI 397: CCCXCVII 398: CCCXCVIII 399: CCCXCIX 400: CD 401: CDI 402: CDII 403: CDIII 404: CDIV 405: CDV 406: CDVI 407: CDVII 408: CDVIII 409: CDIX 410: CDC 411: CDCI 412: CDCII 413: CDCIII 414: CDCIV 415: CDCV 416: CDCVI 417: CDCVII 418: CDCVIII 419: CDCIX 420: CDCC 421: CDCCI 422: CDCCII 423: CDCCIII 424: CDCCIV 425: CDCCV 426: CDCCVI 427: CDCCVII 428: CDCCVIII 429: CDCCIX 430: CDCCC 431: CDCCCI 432: CDCCCII 433: CDCCCIII 434: CDCCCIV 435: CDCCCV 436: CDCCCVI 437: CDCCCVII 438: CDCCCVIII 439: CDCCCIX 440: CDXL 441: CDXLI 442: CDXLII 443: CDXLIII 444: CDXLIV 445: CDXLV 446: CDXLVI 447: CDXLVII 448: CDXLVIII 449: CDXLIX 450: CDL 451: CDLI 452: CDLII 453: CDLIII 454: CDLIV 455: CDLV 456: CDLVI 457: CDLVII 458: CDLVIII 459: CDLIX 460: CDLC 461: CDLCI 462: CDLCII 463: CDLCIII 464: CDLCIV 465: CDLCV 466: CDLCVI 467: CDLCVII 468: CDLCVIII 469: CDLCIX 470: CDLCC 471: CDLCCI 472: CDLCCII 473: CDLCCIII 474: CDLCCIV 475: CDLCCV 476: CDLCCVI 477: CDLCCVII 478: CDLCCVIII 479: CDLCCIX 480: CDLCCC 481: CDLCCCI 482: CDLCCCII 483: CDLCCCIII 484: CDLCCCIV 485: CDLCCCV 486: CDLCCCVI 487: CDLCCCVII 488: CDLCCCVIII 489: CDLCCCIX 490: CDXC 491: CDXCI 492: CDXCII 493: CDXCIII 494: CDXCIV 495: CDXCV 496: CDXCVI 497: CDXCVII 498: CDXCVIII 499: CDXCIX 500: D 501: DI 502: DII 503: DIII 504: DIV 505: DV 506: DVI 507: DVII 508: DVIII 509: DIX 510: DC 511: DCI 512: DCII 513: DCIII 514: DCIV 515: DCV 516: DCVI 517: DCVII 518: DCVIII 519: DCIX 520: DCC 521: DCCI 522: DCCII 523: DCCIII 524: DCCIV 525: DCCV 526: DCCVI 527: DCCVII 528: DCCVIII 529: DCCIX 530: DCCC 531: DCCCI 532: DCCCII 533: DCCCIII 534: DCCCIV 535: DCCCV 536: DCCCVI 537: DCCCVII 538: DCCCVIII 539: DCCCIX 540: DXL 541: DXLI 542: DXLII 543: DXLIII 544: DXLIV 545: DXLV 546: DXLVI 547: DXLVII 548: DXLVIII 549: DXLIX 550: DL 551: DLI 552: DLII 553: DLIII 554: DLIV 555: DLV 556: DLVI 557: DLVII 558: DLVIII 559: DLIX 560: DLC 561: DLCI 562: DLCII 563: DLCIII 564: DLCIV 565: DLCV 566: DLCVI 567: DLCVII 568: DLCVIII 569: DLCIX 570: DLCC 571: DLCCI 572: DLCCII 573: DLCCIII 574: DLCCIV 575: DLCCV 576: DLCCVI 577: DLCCVII 578: DLCCVIII 579: DLCCIX 580: DLCCC 581: DLCCCI 582: DLCCCII 583: DLCCCIII 584: DLCCCIV 585: DLCCCV 586: DLCCCVI 587: DLCCCVII 588: DLCCCVIII 589: DLCCCIX 590: DXC 591: DXCI 592: DXCII 593: DXCIII 594: DXCIV 595: DXCV 596: DXCVI 597: DXCVII 598: DXCVIII 599: DXCIX 600: DC 601: DCI 602: DCII 603: DCIII 604: DCIV 605: DCV 606: DCVI 607: DCVII 608: DCVIII 609: DCIX 610: DCC 611: DCCI 612: DCCII 613: DCCIII 614: DCCIV 615: DCCV 616: DCCVI 617: DCCVII 618: DCCVIII 619: DCCIX 620: DCCC 621: DCCCI 622: DCCCII 623: DCCCIII 624: DCCCIV 625: DCCCV 626: DCCCVI 627: DCCCVII 628: DCCCVIII 629: DCCCIX 630: DCCCC 631: DCCCCI 632: DCCCCII 633: DCCCCIII 634: DCCCCIV 635: DCCCCV 636: DCCCCVI 637: DCCCCVII 638: DCCCCVIII 639: DCCCCIX 640: DCXL 641: DCXLI 642: DCXLII 643: DCXLIII 644: DCXLIV 645: DCXLV 646: DCXLVI 647: DCXLVII 648: DCXLVIII 649: DCXLIX 650: DCL 651: DCLI 652: DCLII 653: DCLIII 654: DCLIV 655: DCLV 656: DCLVI 657: DCLVII 658: DCLVIII 659: DCLIX 660: DCLC 661: DCLCI 662: DCLCII 663: DCLCIII 664: DCLCIV 665: DCLCV 666: DCLCVI 667: DCLCVII 668: DCLCVIII 669: DCLCIX 670: DCLCC 671: DCLCCI 672: DCLCCII 673: DCLCCIII 674: DCLCCIV 675: DCLCCV 676: DCLCCVI 677: DCLCCVII 678: DCLCCVIII 679: DCLCCIX 680: DCLCCC 681: DCLCCCI 682: DCLCCCII 683: DCLCCCIII 684: DCLCCCIV 685: DCLCCCV 686: DCLCCCVI 687: DCLCCCVII 688: DCLCCCVIII 689: DCLCCCIX 690: DCXC 691: DCXCI 692: DCXCII 693: DCXCIII 694: DCXCIV 695: DCXCV 696: DCXCVI 697: DCXCVII 698: DCXCVIII 699: DCXCIX 700: DCC 701: DCCI 702: DCCII 703: DCCIII 704: DCCIV 705: DCCV 706: DCCVI 707: DCCVII 708: DCCVIII 709: DCCIX 710: DCCC 711: DCCCI 712: DCCCII 713: DCCCIII 714: DCCCIV 715: DCCCV 716: DCCCVI 717: DCCCVII 718: DCCCVIII 719: DCCCIX 720: DCCCC 721: DCCCCI 722: DCCCCII 723: DCCCCIII 724: DCCCCIV 725: DCCCCV 726: DCCCCVI 727: DCCCCVII 728: DCCCCVIII 729: DCCCCIX 730: DCCCCC 731: DCCCCCI 732: DCCCCCII 733: DCCCCCIII 734: DCCCCCIV 735: DCCCCCV 736: DCCCCCVI 737: DCCCCCVII 738: DCCCCCVIII 739: DCCCCCIX 740: DCCXL 741: DCCXLI 742: DCCXLII 743: DCCXLIII 744: DCCXLIV 745: DCCXLV 746: DCCXLVI 747: DCCXLVII 748: DCCXLVIII 749: DCCXLIX 750: DCCL 751: DCCLI 752: DCCLII 753: DCCLIII 754: DCCLIV 755: DCCLV 756: DCCLVI 757: DCCLVII 758: DCCLVIII 759: DCCLIX 760: DCCLC 761: DCCLCI 762: DCCLCII 763: DCCLCIII 764: DCCLCIV 765: DCCLCV 766: DCCLCVI 767: DCCLCVII 768: DCCLCVIII 769: DCCLCIX 770: DCCLCC 771: DCCLCCI 772: DCCLCCII 773: DCCLCCIII 774: DCCLCCIV 775: DCCLCCV 776: DCCLCCVI 777: DCCLCCVII 778: DCCLCCVIII 779: DCCLCCIX 780: DCCLCCC 781: DCCLCCCI 782: DCCLCCCII 783: DCCLCCCIII 784: DCCLCCCIV 785: DCCLCCCV 786: DCCLCCCVI 787: DCCLCCCVII 788: DCCLCCCVIII 789: DCCLCCCIX 790: DCCXC 791: DCCXCI 792: DCCXCII 793: DCCXCIII 794: DCCXCIV 795: DCCXCV 796: DCCXCVI 797: DCCXCVII 798: DCCXCVIII 799: DCCXCIX 800: DCCC 801: DCCCI 802: DCCCII 803: DCCCIII 804: DCCCIV 805: DCCCV 806: DCCCVI 807: DCCCVII 808: DCCCVIII 809: DCCCIX 810: DCCCC 811: DCCCCI 812: DCCCCII 813: DCCCCIII 814: DCCCCIV 815: DCCCCV 816: DCCCCVI 817: DCCCCVII 818: DCCCCVIII 819: DCCCCIX 820: DCCCCC 821: DCCCCCI 822: DCCCCCII 823: DCCCCCIII 824: DCCCCCIV 825: DCCCCCV 826: DCCCCCVI 827: DCCCCCVII 828: DCCCCCVIII 829: DCCCCCIX 830: DCCCCCC 831: DCCCCCCI 832: DCCCCCCII 833: DCCCCCCIII 834: DCCCCCCIV 835: DCCCCCCV 836: DCCCCCCVI 837: DCCCCCCVII 838: DCCCCCCVIII 839: DCCCCCCIX 840: DCCCXL 841: DCCCXLI 842: DCCCXLII 843: DCCCXLIII 844: DCCCXLIV 845: DCCCXLV 846: DCCCXLVI 847: DCCCXLVII 848: DCCCXLVIII 849: DCCCXLIX 850: DCCCL 851: DCCCLI 852: DCCCLII 853: DCCCLIII 854: DCCCLIV 855: DCCCLV 856: DCCCLVI 857: DCCCLVII 858: DCCCLVIII 859: DCCCLIX 860: DCCCLC 861: DCCCLCI 862: DCCCLCII 863: DCCCLCIII 864: DCCCLCIV 865: DCCCLCV 866: DCCCLCVI 867: DCCCLCVII 868: DCCCLCVIII 869: DCCCLCIX 870: DCCCLCC 871: DCCCLCCI 872: DCCCLCCII 873: DCCCLCCIII 874: DCCCLCCIV 875: DCCCLCCV 876: DCCCLCCVI 877: DCCCLCCVII 878: DCCCLCCVIII 879: DCCCLCCIX 880: DCCCLCCC 881: DCCCLCCCI 882: DCCCLCCCII 883: DCCCLCCCIII 884: DCCCLCCCIV 885: DCCCLCCCV 886: DCCCLCCCVI 887: DCCCLCCCVII 888: DCCCLCCCVIII 889: DCCCLCCCIX 890: DCCCXC 891: DCCCXCI 892: DCCCXCII 893: DCCCXCIII 894: DCCCXCIV 895: DCCCXCV 896: DCCCXCVI 897: DCCCXCVII 898: DCCCXCVIII 899: DCCCXCIX 900: CM 901: CMI 902: CMII 903: CMIII 904: CMIV 905: CMV 906: CMVI 907: CMVII 908: CMVIII 909: CMIX 910: CMC 911: CMCI 912: CMCII 913: CMCIII 914: CMCIV 915: CMCV 916: CMCVI 917: CMCVII 918: CMCVIII 919: CMCIX 920: CMCC 921: CMCCI 922: CMCCII 923: CMCCIII 924: CMCCIV 925: CMCCV 926: CMCCVI 927: CMCCVII 928: CMCCVIII 929: CMCCIX 930: CMCCC 931: CMCCCI 932: CMCCCII 933: CMCCCIII 934: CMCCCIV 935: CMCCCV 936: CMCCCVI 937: CMCCCVII 938: CMCCCVIII 939: CMCCCIX 940: CMXL 941: CMXLI 942: CMXLII 943: CMXLIII 944: CMXLIV 945: CMXLV 946: CMXLVI 947: CMXLVII 948: CMXLVIII 949: CMXLIX 950: CML 951: CMLI 952: CMLII 953: CMLIII 954: CMLIV 955: CMLV 956: CMLVI 957: CMLVII 958: CMLVIII 959: CMLIX 960: CMLC 961: CMLCI 962: CMLCII 963: CMLCIII 964: CMLCIV 965: CMLCV 966: CMLCVI 967: CMLCVII 968: CMLCVIII 969: CMLCIX 970: CMLCC 971: CMLCCI 972: CMLCCII 973: CMLCCIII 974: CMLCCIV 975: CMLCCV 976: CMLCCVI 977: CMLCCVII 978: CMLCCVIII 979: CMLCCIX 980: CMLCCC 981: CMLCCCI 982: CMLCCCII 983: CMLCCCIII 984: CMLCCCIV 985: CMLCCCV 986: CMLCCCVI 987: CMLCCCVII 988: CMLCCCVIII 989: CMLCCCIX 990: CMXC 991: CMXCI 992: CMXCII 993: CMXCIII 994: CMXCIV 995: CMXCV 996: CMXCVI 997: CMXCVII 998: CMXCVIII 999: CMXCIX 1000: M $
今回の周ではirb(インタラクティブRuby)も少しずつ活用してみることに。
まだ上記の本を入手してないのでまた最初から。
本書を続けつつ、上記の本を早く入手してそっちに切り替え。
0 コメント:
コメントを投稿