Help us understand the problem. What is going on with this article?

Nimの入力いろいろ 競技プログラミング用

More than 1 year has passed since last update.

主にAtCoderでよく使う入力をまとめてみました。
'18/9現在AtCoderでサポートされているのはNim0.13.0なので、文法はそれを前提にします。
(見にくくてすまない)

注意事項 :
・紹介しているものはstring,int,float,seq型の入力を受け付けるコードのみです。
・動作確認はテキトーにしかやってません。
・float型の場合、数値の誤差は勝手に丸めています。そのため実際の値と異なる場合があります。

例 :

# 型
### 入力
var X = 本文
# X = 値

空白なし - 1行

# string
##  Tlllune
var X = readline(stdin)
# X = "Tlllune"

# int
##  1192296
import strutils
var X = parseInt(readline(stdin))
# X = 1192296

# float
##  81
import strutils
var X = parseFloat(readline(stdin))
# X = 81.0


空白でsplit - 1行

# seq[string]
##  Julia Python ....
import strutils
var X = split(readline(stdin))
# X = @["Julia","Python",...]

# seq[int]
## 11 23 ...
import sequtils, strutils
var X = map(split(readline(stdin)),parseInt)
# X = @[11,23,...]

# seq[float]
## 11.4 51.4 ...
import sequtils,strutils
var X = map(split(readline(stdin)),parseFloat)
# X = @[11.4,51.4,...]

空白なし - 複数行

行数は 3 とします。
行数を変える場合は、mapIt(0..<(number),---)(number)に整数で行数を入れてください。

# seq[string]
## Nim
## AtCoder
## Chokudai
import sequtils
var X = mapIt(0..<3,readline(stdin))
# X = @["Nim","AtCoder","Chokudai"]

# seq[int]
## 49106
## 889
## 724106
import sequtils,strutils
var X = mapIt(0..<3,parseInt(readline(stdin)))
# X = @[49106,889,724106]

# seq[float]
## 3.1415
## 2.7183
## 23.141
import sequtils,strutils
var X = mapIt(0..<3,parseFloat(readline(stdin)))
# X = @[3.1415,2.7183,23.141]

そろそろパターンが見えてきたと思います。最後に

空白でsplit - 複数行

空白なし複数行と同じ3行です。

# seq[seq[string]]
## Microsoft Windows ...
## BellLab Unix ...
## Apple Orange ...
import sequtils,strutils
var X = mapIt(0..<3,split(readline(stdin)))
# X = @[ @["Microsoft","Windows",...], @["BellLab","Unix",...], @["Apple","Orange",...]]

# seq[seq[int]]
## 1998 11 27 ...
## 2000 3 4 ...
## 2001 1 31 ...
import sequtils,strutils
var X = mapIt(0..<3,map(split(readline(stdin)),parseInt))
# X = @[ @[1998,11,27...], @[2000,3,4...], @[2001,1,31...]]

# seq[seq[float]]
## 1.008 4.003 ...
## 6.941 9.012 ...
## 10.81 12.01 ...
import sequtils,strutils
var X = mapIt(0..<3,map(split(readline(stdin)),parseFloat))
# X = @[ @[1.008,4.003,...], @[6.941,9.102,...], @[10.81,12.01,...]]

以上。
とりあえず、いかなる状況においても

import sequtils,strutils

を忘れないようにしましょう。


最後にまとめておきます。
コピペして準備用( 補完、メモなど )にご利用ください。

#[
STRING
readline(stdin)
split(readline(stdin))
mapIt(0..<3,readline(stdin))
mapIt(0..<3,split(readline(stdin)))

INT
parseInt(readline(stdin))
map(split(readline(stdin)),parseInt)
mapIt(0..<3,parseInt(readline(stdin)))
mapIt(0..<3,map(split(readline(stdin)),parseInt))

FLOAT
parseFloat(readline(stdin))
map(split(readline(stdin)),parseFloat)
mapIt(0..<3,parseFloat(readline(stdin)))
mapIt(0..<3,map(split(readline(stdin)),parseFloat))
]#

tlllune
Nimやろうぜ
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away