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 - BASIC

N88互換BASICで確認。
BASICは、
<よい>
・大文字小文字は区別されないので、同じアルファベットを2回まで使える。
・PRINT の省略形で ? を使える。
<わるい>
・文字列中のエスケープシーケンスを解釈しない。
・配列を扱う便利機能が皆無。
・文字列を配列解釈できない。
・read & data だと、aが3回出てくるのでダメ。
・関数定義(def fnX) は、定義した時点で f が2回だし、関数名冒頭は fn 固定のため使えない。
・変数は全般的に、設定と参照の1回ずつしか使えない。
 例えば、インクリメントがないので n = N + 1 とすることになるが、
 するとその変数は参照できない。

これはマゾプレイw
答えは平凡なものになったけど、結構長いこと試行錯誤しました。
乱数とかpokeの使用を考えたくらい(笑)
全角半角変換する KACNV$ 関数があるけれど、#1872 で既出なので回避。
1
2
3
4
5
10 cls
20 z$="072 101 108 108 111 044 032 119 111 114 108 100 033"
30 for q = 1 tO 13
40 ? ChR$(vaL(mid$(Z$,Q*4-3,3)));
50 nexT

Index

Feed

Other

Link

Pathtraq

loading...