2012年4月10日火曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 9章(自作メソッドの書き方), 9.5(練習問題)モダンなローマ数字を解いてみる。

その他参考書籍

モダンなローマ数字

コード(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 コメント:

コメントを投稿