Tantangan Diambil dengan izin dari Kontes Tantangan Kode Universitas saya
Selama beberapa tahun sekarang, jumlah siswa di sekolah saya terus bertambah. Pertama jumlah siswa ditingkatkan oleh ruang kelas, tetapi kemudian perlu untuk mengubah beberapa ruang bagi beberapa kelompok untuk memberikan kelas di sana, seperti tempat olahraga atau, kursus terakhir ini, hingga ruang sapu.
Tahun lalu otoritas akademik mendapat anggaran untuk membangun gedung baru dan memulai pekerjaan. Akhirnya mereka selesai dan bangunan baru sudah bisa digunakan, jadi kita bisa bergerak (gedung lama akan direhabilitasi dan akan digunakan untuk fungsi lain), tetapi itu telah membuat kita setengah jalan di tengah jalan. Direktur ingin tahu apakah langkah itu akan mungkin dilakukan tanpa membelah atau bergabung dengan kelompok, atau bahwa beberapa siswa harus mengubah kelompok.
Tantangan
Mengingat jumlah siswa dari kelompok saat ini dan ruang kelas baru (kapasitas), hasilkan nilai kebenaran jika memungkinkan untuk menetapkan ruang kelas yang berbeda, dengan kapasitas yang cukup, untuk masing-masing kelompok saat ini, atau nilai falsey sebaliknya.
Uji Kasus
Input: groups of students => [10, 20, 30], classrooms capacity => [31, 12, 20]
Output: True
Input: groups of students => [10, 20, 30], classrooms capacity => [100, 200]
Output: False
Input: groups of students => [20, 10, 30], classrooms capacity => [20, 20, 50, 40]
Output: True
Input: groups => [30, 10, 30, 5, 100, 99], classrooms => [40, 20, 50, 40, 99, 99]
Output: False
Input: groups => [], classrooms => [10, 10, 10]
Output: True
Input: groups => [10, 10, 10], classrooms => []
Output: False
Input: groups => [], classrooms => []
Output: True
Input: groups => [10, 1], classrooms => [100]
Output: False
Input: groups => [10], classrooms => [100, 100]
Output: True
Input: groups => [1,2,3], classrooms => [1,1,2,3]
Output: True
Catatan
- Anda dapat mengambil input dalam format apa pun yang masuk akal
- Anda dapat output setiap nilai truthy / Falsey (
1/0
,True/False
, dll ...) - kode-golf
sumber
g=[1,2,3], c=[1,1,2,3]
0
nilai yang valid untuk grup atau ruang kelas?Jawaban:
Brachylog , 4 byte
Selalu menyenangkan melihat tantangan dan tahu bahwa brachylog akan mengalahkan semua orang. Mengambil kelas saat ini sebagai input dan ruang kelas baru sebagai output; Ini akan menghasilkan true jika menemukan cara agar sesuai dengan siswa, salah sebaliknya
Penjelasan
Kode memiliki 3 bagian yang urutannya sebenarnya tidak masalah
Cobalah online!
sumber
Pyth, 11 byte
Mengambil input sebagai daftar daftar, ukuran kelas pertama, ukuran kelompok kedua. Coba online di sini , atau verifikasi semua uji sekaligus di sini .
sumber
Jelly , 9 byte
Mengambil ruang kelas sebagai argumen pertama dan kelompok sebagai argumen kedua.
Cobalah online!
Berkomentar
NB: Ini
Ṡ‘ḌẠ¬
terlalu lama. Tapi saya kira ini bukan pendekatan yang tepat.sumber
Japt , 9 byte
Cobalah atau jalankan semua test case di TIO
Cobalah atau jalankan semua test case di TIO
sumber
2 - n
In Japt? Apa jenis kasus penggunaan yang harus dibenarkan itu menjadi 1 byte builtin?Í
adalah jalan pintas untukn2<space>
dan dibuat untuk digunakan dengan string, mengubahnya dari nomor basis-2 ke basis-10 (kebutuhan yang cukup umum). Namun,n
metode ini, ketika diterapkan pada angka, mengurangi angka itu dari argumen metode (default =0
). Jadi di sini, meskipun mengurangi dari0
akan cukup untuk menyortir array dalam urutan terbalik, menggunakan pintasan menghemat satu byteñn<space>
. Saya bisa juga menggunakannya ketika menyortirV
tetapi tidak akan menyimpan byte karena saya masih membutuhkan ruang, alih-alih)
, untuk menutupí
metode ini.Python 2 , 49 byte
Output dengan kode keluar, gagal untuk input palsu.
Cobalah online!
sumber
MATL , 10 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pertimbangkan input
[20, 10, 30]
,[20, 20, 50, 40]
sebagai contoh. Tumpukan ditunjukkan dari bawah ke atas.sumber
Haskell , 40 byte
Cobalah online!
sumber
05AB1E ,
14128 bytePort of @Sok menjawab Pyth , jadi pastikan untuk menghapusnya juga!
Mengambil input sebagai daftar daftar, dengan daftar kelas sebagai item pertama dan daftar grup sebagai item kedua.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Jawaban 12 byte lama:
Mengambil daftar kelas terlebih dahulu, dan kemudian daftar kelompok.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
C # (Visual C # Interactive Compiler) ,
7774 byteCobalah online!
Kode yang dikomentari:
sumber
Haskell, 66 byte
Cobalah online!
sumber
Alat Bash + GNU, 68 byte
69 byte
TIO
mengambil ruang siswa sebagai argumen pertama dan kedua sebagai nomor string yang dibatasi oleh baris baru mengembalikan status 1 untuk true atau 0 untuk false
sumber
Perl 5
-pal
,6762 byte@NahuelFouilleul menyimpan 5 byte dengan pengaturan ulang dan grep
Cobalah online!
Versi 67 byte
Mengambil daftar ukuran ruang yang dipisahkan ruang pada baris pertama dan daftar ukuran ruang yang dipisahkan ruang pada baris berikutnya.
sumber
Gangguan Umum, 74 byte
(defun c(s r)(or(not(sort s'>))(and(sort r'>)(<=(pop s)(pop r))(c s r))))
Non-minified
Menguji
Perhatikan bahwa pengurutan secara permanen mengubah daftar, dan memunculkan kembali variabel ke elemen berikutnya.
Akibatnya ini hanya secara rekursif memeriksa bahwa kelompok siswa terbesar dapat ditampung di ruangan terbesar. Ada 3 kasus dasar:
sumber
Python 2 ,
716764 byteCobalah online!
sumber
zip(...)
untuk menyimpan 5 byte.Retina 0.8.2 , 50 byte
Cobalah online! Tautan termasuk test suite. Membawa dua daftar grup dan kamar (test suite digunakan
;
sebagai pemisah daftar). Penjelasan:Konversikan ke unary.
Membalikkan setiap daftar secara terpisah.
Tambahkan koma ke setiap daftar.
Pastikan setiap angka dalam daftar pertama dapat dicocokkan dengan nomor yang sesuai dalam daftar kedua. Setiap kali
\3
berisi kamar yang sebelumnya cocok dan kelompok berikutnya\2
karena itu harus dapat masuk ke kamar berikutnya. The(?>\3?)
menangani kasus ruang pertama ketika tidak ada kamar sebelumnya belum.sumber
Arang , 28 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil daftar daftar kamar dan grup dan output
-
jika kamar dapat mengakomodasi grup. Penjelasan:Ulangi sementara grup dapat ditugaskan ke sebuah ruangan.
Hapus kamar dan grup terbesar dari daftar mereka.
Pastikan tidak ada grup yang tidak terisi tersisa.
sumber
JavaScript, 56 byte
Cobalah
sumber
7
dan9
di kelas8
dan10
.Perl 6 , 34 byte
Cobalah online!
Mengambil input sebagai daftar dua daftar, grup dan ruang kelas, dan mengembalikan Persimpangan Tidak Ada yang dapat boolified ke true / false.
Penjelasan:
sumber
Ruby , 57 byte
Cobalah online!
Dibutuhkan
c
untuk kelas,r
untuk kamar. Memeriksa semua permutasi kamar alih-alih menggunakan sortir, karena membalikkan biaya sortir terlalu banyak byte. Masih terlihat agak panjang ...sumber
C # (Visual C # Interactive Compiler) ,
1059391828179777674 byteSekarang cocok dengan skor dana!
Melempar kesalahan jika salah, tidak ada jika benar.
-12 byte terima kasih kepada @Destrogio!
Cobalah online!
Penjelasan
sumber
Java (OpenJDK 8) , 183 byte
Cobalah online!
Dengan sedikit saran bermanfaat dari Kevin Cruijssen dan hanya satu pandangan sekilas atas kode saya sendiri, saya dapat mengurangi skor saya dengan keseluruhan 9% hanya dengan mengganti tiga kata bahasa Inggris!
Java (OpenJDK 8) , 166 byte
Cobalah online!
sumber
import java.util.*;
dalam byte-count Anda. Namun Anda dapat golf ke 144 byte di Java 8, atau 140 di Java 10 dengan menggantiboolean
denganvar
.true
/false
dalam kode Anda,1>0
/0>1
adalah alternatif yang lebih pendek . :)1/0
dan saya kira tidak masalah dalam hal ini, harap dicatat bahwa di Jawa tidak seperti Python, JavaScript, C, dll.1/0
Biasanya tidak dianggap sebagai output kebenaran / falsey yang valid . Dan dalam komentar pertama saya, saya menyebutkan versi 144-byte . :) Meskipun, sekarang juga tidak valid karena tidak berfungsi untuk test case terakhir, seperti yang disebutkan oleh @Shaggy .PowerShell , 80 byte
Cobalah online!
Skrip uji yang kurang golf:
sumber
R , 65 byte
Cobalah online!
sumber