Bank baru kami membutuhkan sistem transaksi teller tetapi ada masalah. Hanya ada beberapa ratus byte ruang yang tersisa di server kami, jadi Anda harus menulis kode yang sangat ringkas.
Basis data
Syukurlah database kami sangat sederhana (itu dibangun oleh anak sekolah presiden bank kami), dan kami hanya memiliki beberapa pelanggan sejauh ini.
file Bank.data
adalah:
Account Firstname Lastname Balance Date
123 Maree Jones 346.22 2014-12-13
035 Thomas Breakbone 3422.02 2015-01-03
422 Henrietta Throsby-Borashenko 277847.74 2014-11-21
501 Timmy Bongo 7.95 2014-11-04
105 William Greene 893.00 2015-01-06
300 Mary Galoway 1228.73 2014-12-28
203 Samantha Richardson 2055.44 2014-11-01
151 Bruce Wayne 956119.66 2014-10-09
166 Chip Stonesmith 266.71 2014-12-15
888 Alexandria Cooper 1299.82 2014-12-30
Spesifikasi Aplikasi
Aplikasi bank kami harus menerapkan perintah berikut:
open <firstname> <lastname>
Membuat (membuka) akun baru dengan mencetak nomor akun 3 digit yang unik.
withdraw <account> <amount>
Tarik jumlah dari akun.
deposit <account> <amount>
Setor jumlah ke dalam akun.
close <account>
Tutup akun jika kosong.
report <fieldname>
Cetak laporan dari database yang diurut berdasarkan fieldname. Pindahkan kolom fieldname ke posisi pertama. Setiap lebar kolom akan menjadi maksimum data terluas dan lebar fieldname, dipisahkan oleh satu spasi. Baris pertama akan menjadi judul bidang. Saldo hanya harus benar dibenarkan dengan $
tanda terkemuka .
print <account>
Cetak nama field dan catat untuk akun ini yang diformat seperti laporan.
Setiap kali catatan diubah, Date
bidang dalam catatan harus diperbarui ke tanggal saat ini.
Aplikasi akan menampilkan prompt "#" ketika menunggu perintah. Jika perintah gagal (seperti operasi pada akun yang tidak dikenal atau dana tidak mencukupi), aplikasi harus mencetak pesan kesalahan informatif "gagal". Program harus menulis perubahan kembali ke file setelah setiap perubahan, dan membaca dari file pada setiap perintah karena ada banyak program teller di seluruh dunia yang beroperasi pada file secara bersamaan (kita tidak perlu penguncian file - yang dapat mengurangi kinerja).
EDIT: Bidang string adalah ASCII sederhana (az, AZ, -) tanpa spasi putih dan jumlahnya akan selalu antara 0,00 dan 10.00000000,00 (1 miliar) dolar dengan 2 tempat desimal yang menunjukkan sen. Tanggal akan di waktu setempat di setiap cabang (solusi sederhana tetapi dapat menyebabkan beberapa masalah nanti ...).
Keluaran
Jawaban perlu menunjukkan bahwa mereka memenuhi spesifikasi. Silakan lampirkan output dari program Anda setelah memproses perintah berikut:
report Balance
open Clark Kent
print 001
deposit 001 4530
withdraw 105 893
close 105
report Date
Pastikan Anda menggunakan salinan asli dari Bank.data
file yang diberikan di atas.
Mencetak gol
Ini adalah kode-golf, sehingga skor Anda akan menjadi jumlah byte kode Anda. Celah standar dilarang.
<firstname>
dan<lastname>
dan jangkauan dan ketepatan<amount>
? (Misalnya mungkin ada beberapa optimisasi yang dimungkinkan jika<amount>
selalu memiliki dua tempat desimal - atau Anda mungkin ingin program tersebut dapat digunakan oleh cabang Timur Tengah, di mana sebagian besar mata uang menggunakan tiga tempat desimal).<firstname>
dan<lastname>
keduanya hanya menggunakana-zA-Z
, tetapi bahkan pernyataan sederhana bahwa mereka tidak pernah mengandung karakter tab memungkinkan menggunakan TSV. Jika mereka bisa berupa urutan karakter ASCII, beberapa bentuk melarikan diri atau membatasi selain dengan pembatas satu-char diperlukan.Jawaban:
Ruby, 918
Pertanyaan ini cukup panjang untuk golf karena terdiri dari banyak bagian kecil. Untuk sesaat, saya hampir ingin mendefinisikan beberapa kelas tambahan untuk membuat hal-hal lebih rapi dengan polimorfisme dll ... (tetapi pada akhirnya saya tidak melakukannya).
Mungkin bisa bermain golf lebih lanjut. Tetapi sampai sekarang, saya bahkan tidak bisa melacak apa yang saya lakukan di baris terakhir.
Keluaran:
sumber
T-SQL 1919
Disebut dengan "exec q 'Perintah Anda di sini'" Saya tidak berpikir T-SQL benar-benar bisa mendapatkan input pengguna, jadi saya pikir ini sedekat mungkin.
Menggunakan utilitas bcp untuk I / O yang belum pernah saya coba sebelumnya karena dilengkapi dengan SQL Server 2014.
Saya tidak yakin apakah akan lebih baik atau lebih buruk untuk menggunakan hanya prosedur tersimpan utama dan meletakkan sisa kode di sana.
sumber
Cobra - 1505
Keluaran:
sumber
Python 2 - 2205 byte
Berikut ini adalah upaya yang agak bertele-tele pada suatu solusi.
Berikut adalah contoh aplikasi yang digunakan:
sumber
Gelombang - 1827
Batch tidak dibuat untuk hal semacam ini.
Belum menerapkan Urutkan (dalam laporan), dan fungsi Cetak.
sumber
STATA 1506
Tidak mencoba golf terlalu banyak. Saya pikir bahasa statistik akan lebih baik dalam hal ini, tetapi ternyata.
sumber
C # -
19521883Saya akan menunjukkan beberapa output ketika saya masuk besok. Untuk saat ini, inilah pengajuannya:
sumber
C # -
18701881 BytesMenyalahgunakan
using
aliasAction
,,Func
, pengecualian untuk kontrol aliran dan banyak lagi. Mempertimbangkan untuk mengeksploitasi "laporan" itu tidak menentukan bagaimana hal-hal harus diurutkan. Bank.data harus menggunakan jeda baris unix atau kode ini akan terputus.Diedit untuk memperbaiki masalah yang mungkin disortir berdasarkan bidang selain Tanggal dan Saldo.
Keluaran:
sumber