「なでしこv3」開発掲示板

なでしこ3を改善するための掲示板
[一覧へ] > (@66) [高] [解決]
@66■ (#232) cnako で入力をリダイレクト時に、尋ねるを複数回使えない - TumoiYorozu (2023-04-06 19:08) /高 未処理
以下のように、cnako で入力をリダイレクトで入れた時に、2回目以降の尋ねる命令が使用できません。

ソースコード (code.nako3)
```
名前は『あなたの名前は?』と尋ねる
「{名前}さんこんにちは」と表示

年齢は『あなたの年齢は?』と尋ねる
「{年齢}歳! 若い!」と表示
```

入力(input.txt)
```
TumoiYorozu
1
```
cnako3 code.nako3 < input.txt

出力
あなたの名前は?123
123さんこんにちは
あなたの年齢は?


現在、競技プログラミングサイト AtCoder の言語アップデートにて、なでしこ3が使用可能になりつつ調整中なのですが、リダイレクトで複数行の入力を受け取れないので、入力が複数行ある問題が解けなくなってしまっています。
https://atcoder.jp/contests/language-test-202301/submissions/40365113

入力が1行だけの問題は解けてACが取れます
https://atcoder.jp/contests/language-test-202301/submissions/40365743

(#233) 解決策案 - TumoiYorozu (2023-04-06 19:37) /高 未処理
少し調べてみて、以下の方法で(も)解決できるかも知れません

・readline で、 question を使わずに行う方法
https://gist.github.com/cmdcolin/e88307f6255c85ac534b903a09b73825

・readline-sync を使う方法
https://qiita.com/tanaka00x/items/a0c58dc132fd295784a8

(#235) む、難しい。。。 - クジラ飛行机 (2023-04-06 22:17) /高 修正中
pipeでstdinにデータ渡しても、Node.jsだとなかなかうまくデータが受け取れませんね。
結果、readline-syncもだめで、questionを使わなくてもだめ。

以下の投稿を読むと
https://qiita.com/yosgspec/items/1dd110eb6862e8ecc46f
asyncを使うとpipeの内容が読み取れないとのこと。

こうなったら別途一気にコマンドライン取得する命令を追加しますね。

(#236) とりあえずv.3.4.15にて「標準入力全取得」命令を追加しました - クジラ飛行机 (2023-04-06 23:14) /高 確認待ち
とりあえずv.3.4.15にて「標準入力全取得」命令を追加しました
https://github.com/kujirahand/nadesiko3/commit/e51a9461f0a31e646cfd82b7c7fa032934f11e48

(#238) 改修して PR を出しました - TumoiYorozu (2023-04-08 00:41) /高 確認待ち
早速修正ありがとうございます!

修正コミットを参考に、こちらでも修正しました。
パイプ使用時、非使用時両方で期待通り2行目も同様に取得できることを確認しました。

https://github.com/kujirahand/nadesiko3/pull/1447

(#240) マージしました! - クジラ飛行机 (2023-04-08 09:54) /高 確認待ち
@ TumoiYorozu さん、ありがとうございます!マージしました。
素晴らしいです。

(#241) v3.4.16 にて反映 - クジラ飛行机 (2023-04-08 10:01) /高 確認待ち
とりあえず
nadesiko3@3.4.16
にて、npm に反映させてみました。
Web版は何も変化ないので、npmのみ更新です。

(#242) 対応ありがとうございます! - TumoiYorozu (2023-04-08 10:43) /高 解決

(#232)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能