kato_yosuke
@kato_yosuke (cat0)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Ruby 競プロ問題 参戦募集!

問題

  • 0~99までの数字が複数入力されます。(改行区切り。最大100個)
  • 僕は81,73,73,84,65という数字の順番が大好きです。
  • そんな僕のために、入力された数字の中に81,73,73,84,65という並びがあったら1、なかったら0を出力するプログラムを作成してください。
  • ただし僕は長文を読むのが苦手なため、100Byte以下のプログラムがいいです。(半角英数字1文字=1Byte、全角文字1文字=2Byteとする)
  • 1番短いプログラムを書いた人には僕から感謝の気持ちが与えられます。
  • 制約とかはあまり考えてないです、、
  • 40Byte以下だったらすごい!:metal:
  • 6/1に回答受付終わります!

入力例 1)

1
2
3
4
5
6
7
8
9
10

出力例 1)

0

入力例 2)

91
22
31
81
73
73
84
65
23
10

出力例 2)

1

入力例 3)

追記しました

91
22
31
81
7
3
73
84
65
23
10

出力例 3)

0
2

暇人なのでトライしようかな!。但し、机上です。

cat - | ruby battle.rb

ctrl+zで終了
または、

run.sh
#!/bin/sh
cat <<EOF | ruby battle.rb
31
81
73
73
84
65
23
EOF
wc battle.rb

で、最もファイルサイズが最小な方の勝ちで宜しいでしょうか?

尚、私はコードを

```
p 1  見せるコード
```
<!-- 
   見せないコード 
-->  進捗30%  5/31公開予定

として非表示で最初は掲載します。

1Like

忘れそうなのでコード公開します。

机上は諦めて、携帯にTermux をインストールし,完成しました。

y=[81,73
x=$stdin.readlines
p 条件 ? 1 : 0
p 条件?1:0  これも発見!(4バイト節約)

p STDIN.readlines 試行錯誤で発見!
p$stdin.readlines 字数は変わらない
p$<.readlines      wxotuさんを参考
battle.rb
y=/81\n73\n73\n84\n65/
x=$stdin.read
p x=~y?1:0
battle.rb
p$stdin.read=~/81\n73\n73\n84\n65/?1:0
 1 1 39 battle.rb 私の記録です。

\nを改行で1文字節約するwxotuさんに脱帽です。$stdinも調べたのですが$<は見落としてました。rubyは深いと実感してます。

battle.rb
p$<.read=~/81
73
73
84
65/?1:0

5 5 31 battle.rb wxotuさんにオマージュとして31バイトでした。


進捗100% 39バイト 5/31公開予定 wxotuさんにオマージュとして31バイト 因みに、7,3に分離した場合、1のケースは41バイトで目標に1バイト足りませんでした。
7,3と分かれた場合、判定が0となるロジックに訂正しました。最初は無理と思っていても試行錯誤を繰り返すことで目標に到達できることに感動してます。そして、机上では限界があることを実感してます。(Termuxは凄い、今まで机上でしていたことが、何だったとおもいます)

皆さんチャレンジしてください。

battle.rb
p$<.read.gsub(/\n/,'')=~/8173738465/?1:0

7,3と分かれた場合のコードです。

1Like

@HalHaradaさん、@woxtuさんご参加ありがとうございました!
今回は@woxtuさんのコードが最初に一番短かったです!入力された文字列に指定の文字列が含まれているかの判定を$<.read['指定文字列']でしていたのが早かったポイントですね!
@HalHaradaさんも=~を使用して短くしていてすごいと思いました!

0Like

今回の問題で僕は81,73,73,84,65という数字の順番が大好きです。という出題をしたのは81,73,73,84,65という数字をASCIIで文字列に置き換えるとQIITAとなり、これに気付いて気持ちよく解いてくれないかなという意図でした!
また次回開催いたしましたら是非ご参加してください!

1Like

Your answer might help someone💌