challenge Hello, world!その2

「Hello, world!」と表示するプログラムを作ってください。 ただし、コード中に同じアルファベットが2回出現してはいけません。

アルファベットとは、小文字のa-zと大文字のA-Zを指すものとします。また、大文字と小文字は区別するものとします。つまり、記号や空白文字は何度出現しても構いませんし、小文字のgと大文字のGの両方を使うのは構いません。

単純な「print "Hello, world!"」はrとoとlが2回以上使われているので題意を満たしません。

この問題はHello, world!の上級編です。

HSP では文字列以外の大文字小文字の区別がないので、区別しないでやってみました。”いかれ具合”は高いと思います。小さなウィンドウが 34 個出ますので、実行するときは気をつけてください。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
_0(   0 ) =  31,  13,  11,  73,  38,  44,  48,   8,  78,  16,  11,  69
_0(  12 ) = 111,  51,  37,   9, 138,  35,  10,  22, 112,  28,  32,  11
_0(  24 ) = 108,  33,  10,  46, 110,  74,  30,  10, 161,  10,   9,  74
_0(  36 ) = 193,   9,   9,  72, 228,  32,  27,   9, 249,  37,  12,  39
_0(  48 ) = 225,  76,  31,  10, 221,  36,  10,  44, 273,  77,  15,  11
_0(  60 ) = 280,  84,   7,  14, 335,  44,   9,  40, 359,  33,  12,  51
_0(  72 ) = 338,  80,  53,   9, 383,  47,  14,  45, 412,  36,  31,   8
_0(  84 ) = 438,  39,   9,  43, 412,  78,  29,   7, 405,  41,  12,  40
_0(  96 ) = 461,  34,   9,  53, 464,  44,  29,  10, 503,  10,   8,  73
_0( 108 ) = 564,  10,  10,  78, 540,  40,  28,   9, 532,  45,  11,  39
_0( 120 ) = 536,  76,  32,  10, 592,  13,  12,  52, 591,  75,  14,  12

_1 = 0
do
    bgscr _1 + 1, _0( _1 + 2 ), _0( _1 + 3 ), 0, _0( _1 + 0 ), _0( _1 + 1 )
    _1 += 4
until _1 > 128

Posted feedbacks - Ruby

8進数を使ったものです.
1
ruby -e 'puts "\110\145\154\154\157\54\40\167\157\162\154\144\41"'

結構悩んだ。
1
"Helo,Wrd!".gsub(/(.{2})(.)(.)(.{2})(.)(.{2})/) {$1+$2+$2+$3+$4+$3+$5+$2+$6}

$&と$'をつかうことでで記号だけで参照
1
"lo"=~/./;puts"He#{$&*2+$'}, w#$'r#$&d!"

これならどうだ
1
2
3
4
5
6
7
8
9
puts <<_
##   #       # #                          #    # ##
##   #       # #                          #    # ##
##   #  ###  # # ####     # # # #### #### #    # ##
###### #   # # # #  #     # # # #  # #  # # #### ##
##   # ####  # # #  #     # # # #  # #    # #  # ##
##   # #     # # #  # ##  # # # #  # #    # #  #
##   #  ###  # # ####  #  ####  #### #    # #### ##
_

Index

Feed

Other

Link

Pathtraq

loading...