LoginSignup
11
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-09-09

主に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))
]#

11
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5