私たちのほとんどは、端末でSQLの結果を見て、行と列にきちんとフォーマットされていると確信しています。まだお持ちでない場合の例を以下に示します。
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
この課題の目標は、テーブルの列と行のデータが与えられたら、このスタイルでテーブルを描画することです。テーブルの上下に水平線があり、ヘッダー行のすぐ下に1本あるはずです。すべての列とテーブルの両側に1本の垂直線が必要です。垂直線にはパイプ、水平線にはハイフン、交差する場所にはプラス記号を使用する必要があります。
詳細:
- データは、stdinを介して、または関数の引数として入力できますが、何らかの形式の文字列でなければなりません
- データは文字列区切り文字で分割する必要があります
; - データはASCII文字のみで構成され、引用符で囲まれず、区切り文字は含まれません。
- データの最初の行は列ヘッダーに使用されます
- データの列数は常に同じです
- 入力には常に少なくとも2行(1つのヘッダー、1つのデータ)が含まれます。空のセットを処理する必要はありません。
- 末尾または前の改行が許可されます
- 各列は最も幅の広い要素と同じ幅にし、右側に短い要素をパディングします(左側に数字をパディングするとボーナス-5%)
- 列が広い場合を除いて、ヘッダーとデータの前後に1スペースのパディングが必要です。
- 実際の
mysqlプログラムを使用してテーブルを生成することは許可されていません - 標準的な抜け穴が適用されます
サンプル入力:
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
出力
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
得点:
もちろん、最小バイト数が勝ちます。左側のパディング番号に-5%のボーナス(詳細を参照)。
プログラムの実行時間に制限はありますか?
—
ダウンゴート
いや; 実際に終了する限り、必要なだけ時間がかかります。
—
グレンスミス
入力が1行しかない場合、出力はどうなりますか?
—
ズガルブ
常に少なくとも2行の入力があると仮定できます。MySQLは空のセットのテーブルも表示しません。どちらも必要ありません。
—
グレンスミス