VvyLw's Library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub

:warning: Java/library/core/io/IO.java

Depends on

Required by

Code

package library.core.io;

import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.function.IntUnaryOperator;
import java.util.function.LongUnaryOperator;
import java.util.function.UnaryOperator;
import java.util.stream.IntStream;

import library.ds.pair.FloatPair;
import library.ds.pair.IntPair;

/**
 * 入出力をまとめたクラス
 */
public final class IO implements AutoCloseable {
	private final MyScanner in;
	private final MyPrinter out, err;
	/**
	 * コンストラクタ
	 * @param in 標準入力
	 * @param out 標準出力
	 * @param err 標準エラー出力
	 * @param autoFlush flushの自動化
	 */
	public IO(final InputStream in, final OutputStream out, final OutputStream err, final boolean autoFlush) {
		this.in = new MyScanner(in);
		this.out = new MyPrinter(out, autoFlush);
		this.err = new MyPrinter(err, true);
	}
	/**
	 * @see MyScanner#ni
	 */
	public final int ni(){ return in.ni(); }
	/**
	 * @see MyScanner#nl
	 */
	public final long nl(){ return in.nl(); }
	/**
	 * @see MyScanner#nd
	 */
	public final double nd(){ return in.nd(); }
	/**
	 * @see MyScanner#nc
	 */
	public final char nc(){ return in.nc(); }
	/**
	 * @see MyScanner#ns
	 */
	public final String ns(){ return in.ns(); }
	/**
	 * @see MyScanner#nt
	 */
	public final char[] nt(){ return in.nt(); }
	/**
	 * @see MyScanner#nb
	 */
	public final BigInteger nb(){ return in.nb(); }
	/**
	 * @see MyScanner#pi
	 */
	public final IntPair pi(){ return in.pi(); }
	/**
	 * @see MyScanner#pf
	 */
	public final FloatPair pf(){ return in.pf(); }
	/**
	 * 大きさnのint型配列を入力する
	 * @param n 配列の大きさ
	 */
	public final int[] ni(final int n) {
		final int[] a = new int[n];
		Arrays.setAll(a, i -> ni());
		return a;
	}
	/**
	 * @param n
	 * @param f
	 * @return int型配列にfを施したもの
	 */
	public final int[] ni(final int n, final IntUnaryOperator f){ return Arrays.stream(ni(n)).map(f).toArray(); }
	/**
	 * 大きさnのlong型配列を入力する
	 * @param n 配列の大きさ
	 */
	public final long[] nl(final int n) {
		final long[] a = new long[n];
		Arrays.setAll(a, i -> nl());
		return a;
	}
	/**
	 * @param n
	 * @param f
	 * @return long型配列にfを施したもの
	 */
	public final long[] nl(final int n, final LongUnaryOperator f){ return Arrays.stream(nl(n)).map(f).toArray(); }
	/**
	 * 大きさnのdouble型配列を入力する
	 * @param n 配列の大きさ
	 */
	public final double[] nd(final int n) {
		final double[] a = new double[n];
		Arrays.setAll(a, i -> nd());
		return a;
	}
	/**
	 * [maybe_unused]
	 * 大きさnのchar型配列を入力する
	 * @param n 配列の大きさ
	 */
	public final char[] nc(final int n) {
		final char[] a = new char[n];
		IntStream.range(0, n).forEach(i -> a[i] = nc());
		return a;
	}
	/**
	 * 大きさnの文字列配列を入力する
	 * @param n 配列の大きさ
	 */
	public final String[] ns(final int n) {
		final String[] a = new String[n];
		Arrays.setAll(a, i -> ns());
		return a;
	}
	/**
	 * n個の文字列をtoCharArrayして返す
	 * @param n 配列の大きさ
	 */
	public final char[][] nt(final int n) {
		final char[][] a = new char[n][];
		Arrays.setAll(a, i -> nt());
		return a;
	}
	/**
	 * [maybe_unused]
	 * 大きさnの多倍長整数配列を入力する
	 * @param n 配列の大きさ
	 */
	public final BigInteger[] nb(final int n) {
		final BigInteger[] a = new BigInteger[n];
		Arrays.setAll(a, i -> nb());
		return a;
	}
	/**
	 * IntPair型の配列を入力する
	 * @param n
	 * @see IntPair
	 */
	public final IntPair[] pi(final int n) {
		final IntPair[] a = new IntPair[n];
		Arrays.setAll(a, i -> pi());
		return a;
	}
	/**
	 * @param n
	 * @param f
	 * @return IntPair配列にfを施したもの
	 */
	public final IntPair[] pi(final int n, final UnaryOperator<IntPair> f){ return Arrays.stream(pi(n)).map(f).toArray(IntPair[]::new); }
	/**
	 * FloatPair型の配列を入力する
	 * @param n
	 * @see FloatPair
	 */
	public final FloatPair[] pf(final int n) {
		final FloatPair[] a = new FloatPair[n];
		Arrays.setAll(a, i -> pf());
		return a;
	}
	/**
	 * h×wのint型の二次元配列を入力する
	 * @param h
	 * @param w
	 */
	public final int[][] ni(final int h, final int w) {
		final int[][] a = new int[h][w];
		Arrays.setAll(a, i -> ni(w));
		return a;
	}
	/**
	 * h×wのlong型の二次元配列を入力する
	 * @param h
	 * @param w
	 */
	public final long[][] nl(final int h, final int w) {
		final long[][] a = new long[h][w];
		Arrays.setAll(a, i -> nl(w));
		return a;
	}
	/**
	 * h×wのdouble型の二次元配列を入力する
	 * @param h
	 * @param w
	 */
	public final double[][] nd(final int h, final int w) {
		final double[][] a = new double[h][w];
		Arrays.setAll(a, i -> nd(w));
		return a;
	}
	/**
	 * h×wのchar型の二次元配列を入力する
	 * @param h
	 * @param w
	 */
	public final char[][] nc(final int h, final int w) {
		final char[][] a = new char[h][w];
		Arrays.setAll(a, i -> nc(w));
		return a;
	}
	/**
	 * [maybe_unused]
	 * h×wの文字列の二次元配列を入力する
	 * @param h
	 * @param w
	 */
	public final String[][] ns(final int h, final int w) {
		final String[][] a = new String[h][w];
		Arrays.setAll(a, i -> ns(w));
		return a;
	}
	/**
	 * [maybe_unused]
	 * h×wの多倍長整数の二次元配列を入力する
	 * @param h
	 * @param w
	 */
	public final BigInteger[][] nb(final int h, final int w) {
		final BigInteger[][] a = new BigInteger[h][w];
		Arrays.setAll(a, i -> nb(w));
		return a;
	}
	/**
	 * @see MyScanner#line
	 */
	public final String line(){ return in.line(); }
	/**
	 * @param arg
	 * @see MyPrinter#print
	 */
	public final void print(final Object arg){ out.print(arg); }
	/**
	 * @param fmt
	 * @param args
	 * @see MyPrinter#printf
	 */
	public final void printf(final String fmt, final Object... args){ out.printf(fmt, args); }
	/**
	 * @see MyPrinter#out
	 */
	public final void out(){ out.out(); }
	/**
	 * @param head
	 * @param tail
	 * @see MyPrinter#out
	 */
	public final void out(final Object head, final Object... tail){ out.out(head, tail); }
	/**
	 * int型二次元配列を出力する
	 * @param args
	 */
	public final void out(final int[][] args){ IntStream.range(0, args.length).forEach(i -> out(args[i])); }
	/**
	 * long型二次元配列を出力する
	 * @param args
	 */
	public final void out(final long[][] args){ IntStream.range(0, args.length).forEach(i -> out(args[i])); }
	/**
	 * double型二次元配列を出力する
	 * @param args
	 */
	public final void out(final double[][] args){ IntStream.range(0, args.length).forEach(i -> out(args[i])); }
	/**
	 * boolean型二次元配列を出力する
	 * @param args
	 */
	public final void out(final boolean[][] args){ IntStream.range(0, args.length).forEach(i -> out(args[i])); }
	/**
	 * char型二次元配列を出力する
	 * @param args
	 */
	public final void out(final char[][] args){ IntStream.range(0, args.length).forEach(i -> out(args[i])); }
	/**
	 * Objectクラスの二次元配列を出力する
	 * @param args
	 */
	public final void out(final Object[][] args){ Arrays.stream(args).forEach(this::out); }
	/**
	 * outl(a, b, c)で, "a\nb\nc\n"の形式で出力される
	 * @param head
	 * @param tail
	 */
	public final void outl(final Object head, final Object... tail){ out.outl(head, tail); }
	/**
	 * デバッグ用
	 * @param head
	 * @param tail
	 * @see MyPrinter#out
	 */
	public final void dump(final Object head, final Object... tail){ err.out(head, tail); }
	/**
	 * デバッグ用
	 * @param a
	 */
	public final void dump(final int[][] args){ IntStream.range(0, args.length).forEach(i -> dump(args[i])); }
	/**
	 * デバッグ用
	 * @param a
	 */
	public final void dump(final long[][] args){ IntStream.range(0, args.length).forEach(i -> dump(args[i])); }
	/**
	 * デバッグ用
	 * @param a
	 */
	public final void dump(final double[][] args){ IntStream.range(0, args.length).forEach(i -> dump(args[i])); }
	/**
	 * デバッグ用
	 * @param a
	 */
	public final void dump(final boolean[][] args){ IntStream.range(0, args.length).forEach(i -> dump(args[i])); }
	/**
	 * デバッグ用
	 * @param a
	 */
	public final void dump(final char[][] args){ IntStream.range(0, args.length).forEach(i -> dump(args[i])); }
	/**
	 * デバッグ用
	 * @param a
	 */
	public final void dump(final Object[][] args){ IntStream.range(0, args.length).forEach(i -> dump(args[i])); }
	/**
	 * デバッグ用
	 * @param head
	 * @param tail
	 * @see MyPrinter#outl
	 */
	public final void dumpl(final Object head, final Object... tail){ err.outl(head, tail); }
	@Override
	public final void close() {
		out.flush();
		in.close();
		out.close();
		err.close();
	}
}
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.10/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
  File "/home/runner/.local/lib/python3.10/site-packages/onlinejudge_verify/languages/user_defined.py", line 68, in bundle
    raise RuntimeError('bundler is not specified: {}'.format(str(path)))
RuntimeError: bundler is not specified: Java/library/core/io/IO.java
Back to top page