Tugas
Sebuah teater memiliki 10 baris, berlabel A
untuk J
dari depan ke belakang, dan 15 kursi di setiap baris, nomor 1 sampai 15 dari kiri ke kanan.
Program ini menggunakan aturan berikut untuk memilih kursi terbaik.
- Aturan 1: Semua kursi dalam satu pemesanan harus di baris yang sama, di sebelah satu sama lain.
- Aturan 2: Kursi harus sedekat mungkin ke depan, lalu sedekat mungkin ke kiri (huruf terendah, lalu angka terendah)
Tulis fungsi yang mengambil jumlah tiket yang diinginkan sebagai input integer ( n
), dan output kursi terbaik yang tersedia dalam daftar panjang n
.
Program Anda harus:
- Keluaran
-1
jika 1> Input atau Input> 15 * - Keluaran
-1
jika kursi tidak tersedia * - Memiliki fungsi
B(n)
yang dapat digunakan pengguna untuk memasukkan jumlah kursi yang diinginkan.
* Anda dapat menampilkan -1 dalam daftar jika membuatnya lebih mudah
Contohnya
I / O
Memanggil B(5)
pada array baru harus kembali [A1, A2, A3, A4, A5]
Memanggil B(2)
setelah itu kemudian kembali [A6, A7]
Memanggil B(10)
setelah itu kemudian kembali [B1, B2, ... B9, B10]
Memanggil B(-1)
harus selalu kembali-1
Batalkan Solusi Python
Theatre = [ [False] * 16 ] * 11
def B(n):
if 0 <= n <= 15:
for i in range(10):
for j in range(15-n+1):
try:
if not Theatre[i][j]:
if not Theatre[i][j + n]:
row = i
start = j
List = []
for q in range(n):
List.append(chr(row + 65) + str(start + q + 1))
Theatre[row][start + q] = True
return List
except:
break
return -1
Jawaban:
JavaScript - 172
Fungsinya sendiri adalah 172:
Memasukkan:
Keluaran:
sumber
Javascript ( ES6 ) -
13012710710198Demo di sini: http://jsfiddle.net/tBu5G/
Beberapa ide diambil dari @ edc65
sumber
n=0
Haskell, 129
Beberapa penyesuaian harus dilakukan untuk membuat fungsi ini di Haskell:
b
mengembalikan sepasang: tiket (jika mungkin), dan keadaan teater yang baru.t
adalah kondisi teater awal, dengan semua tiket belum terjual. Juga, pengembalian-1
itu tidak wajar untuk Haskell, jadi jika tidak ada tiket yang dapat dikeluarkan untuk permintaan, daftar kosong dikembalikan untuk tiket.sumber
APL (75)
Uji:
Penjelasan:
T←10 15⍴0
:T
adalah matriks 15-kali-10 yang menahan status teater (0 = gratis)B←{
...}
: fungsinya(⍵∊⍳15)
: if⍵
adalah anggota himpunan bilangan bulat dari 1 hingga 15,∨/Z←,T⍷⍨⍵/0
: danT
berisi⍵
nol secara berurutan (menyimpan titik awal yang memungkinkanZ
),:
: kemudian:(⊃Z/,⍳⍴T)
: pilih koordinat mulai yang mungkin, dan ambil yang pertama,∘+¨1-⍨⍳1⍵
: tambahkan⍵-1
lebih banyak posisi di sebelah kanan koordinat awalP←
: simpan koordinat dalamP
{⎕A[⍺],⍕⍵}/¨
: memformat koordinatT[P]←
: menyimpan koordinat yang diformat di tempat mereka diT
. (nilai nol di T akan dilakukan)+
: kembalikan hasil, yang merupakan koordinat yang diformat (hasil penugasan secara tacit secara default)⋄¯1
: jika tidak, kembali¯1
.sumber
Javascript (E6) 99
103 113 121Sungguh Anda hanya perlu menyimpan nomor untuk setiap baris
Uji
Tidak disatukan
sumber
JavaScript (ECMAScript 6 Draft) -
969591 KarakterSolusi rekursif:
Versi 1
Versi 2:
(Terima kasih kepada nderscore untuk inspirasi untuk penghematan 1 karakter)
Versi 3:
(Terima kasih kepada nderscore )
Penjelasan:
sumber
B=(n,r=0)=>n>0&r<9?(k=B[r]|0)+n<16?[...Array(n)].map(_=>'ABCDEFGHIJ'[r]+(B[r]=++k)):B(n,r+1):-1
B=(n,r=0)=>n<1|r>9?-1:(k=B[r]|0)+n<16?[...Array(n)].map(_=>'ABCDEFGHIJ'[r]+(B[r]=++k)):B(n,r+1)
seharusnya berhasil.B=(n,r=0)=>n<1|r>9?-1:(B[r]^=0)+n<16?[...Array(n)].map(_=>'ABCDEFGHIJ'[r]+ ++B[r]):B(n,r+1)
GolfScript,
10382 byteContohnya
Bagaimana itu bekerja
sumber
CoffeeScript -
171150149Saya curiga Ruby atau Perl akan mengalahkan ini sebelum lama.
JavaScript / Penjelasan Setara :
Bagi mereka yang tidak terbiasa dengan CoffeeScript.
Cobalah online .
sumber
All seats in one booking must be in the same row, next to each other.
Cobra - 309
Ini seharusnya dilakukan, tetapi saya tidak bisa sampai ke kompiler selama beberapa jam, jadi saya akan memperbaruinya nanti jika diperlukan.
sumber
C # - 289
Usaha pertama dalam kode golf.
Tidak bermain golf
sumber
K, 140
Tidak diragukan lagi banyak perbaikan harus dilakukan di sini
sumber
C ++ - 257
Juga merupakan upaya pertama dalam bermain golf.
Karena to_string tidak berfungsi dengan kompiler saya, toS didefinisikan sebagai
Dan sebagai antarmuka kecil
sumber
vector<int> t(10,0);vector<string> b(int n){vector<string> o;for(int i=0,j;i<10&&16>n&&n>0;i++){if(15-t[i]<n)continue;char l='A'+i;for(j=0;j<n;j++)o.push_back(l+to_string(j+t[i]+1));t[i]+=n;n=0;}if(o.empty())o.push_back("-1");return o;}
C # - 268 Bytes
Kode golf:
Kode tidak dikunci:
Saya akan menulis beberapa anotasi ke dalam komentar tentang solusi GoldenDragon daripada membuat sendiri, tetapi reputasi saya tidak mengizinkannya.
sumber