NEPLg2 Tutorial - 22 - 競プロ向け I/O と演算
Web Playground
Web Playground

きょうプロけ I/O と演算えんざん

この章は、競技プログラミングで最初に使う入出力パターンを、std/streamio の scanner / open だけで短く書く練習です。

2 整数を読んで和を出力する

TESTstdionormalize_newlines
#entry main
#indent 4
#target std

#import "core/math" as *
#import "core/result" as *
#import "std/streamio" as *
#import "std/iotarget" as *

fn main <()*> ()> ():
    let sc <StreamScanner> unwrap_ok open ReadStream::Stdio;
    let ans <i32> add read sc read sc;
    close sc;
    unwrap_ok open WriteStream::Stdio
    |> writeln ans
    |> flush
    |> close

i64 を読んで加算する

10^12 以上を扱うときは i64 を使います。

TESTstdionormalize_newlines
#entry main
#indent 4
#target std

#import "core/math" as *
#import "core/result" as *
#import "std/streamio" as *
#import "std/iotarget" as *

fn main <()*> ()> ():
    let sc <StreamScanner> unwrap_ok open ReadStream::Stdio;
    let ans <i64> add read sc read sc;
    close sc;
    unwrap_ok open WriteStream::Stdio
    |> writeln ans
    |> flush
    |> close

3 値を 1 行で空白区切り出力する

write w " " を使うと、出力フォーマットを崩さずに書けます。

TESTstdionormalize_newlines
#entry main
#indent 4
#target std

#import "core/result" as *
#import "std/streamio" as *
#import "std/iotarget" as *

fn main <()*> ()> ():
    let sc <StreamScanner> unwrap_ok open ReadStream::Stdio;
    let a <i32> read sc;
    let b <i32> read sc;
    let c <i32> read sc;
    close sc;
    unwrap_ok open WriteStream::Stdio
    |> write a
    |> write " "
    |> write b
    |> write " "
    |> writeln c
    |> flush
    |> close