Wyzwanie Podjęte za zgodą mojego konkursu na University Code Challenge
Od kilku lat liczba uczniów w mojej szkole stale rośnie. Najpierw liczba uczniów została zwiększona o klasę, ale następnie konieczne było przekształcenie niektórych miejsc dla niektórych grup, aby mogły tam prowadzić zajęcia, takie jak stojaki na siłownię lub, w tym ostatnim kursie, do sali miotły.
W ubiegłym roku władze akademickie uzyskały budżet na budowę nowego budynku i rozpoczęły prace. W końcu zostały ukończone i nowy budynek może już być używany, więc możemy się poruszać (stary budynek zostanie odnowiony i zostanie wykorzystany do innej funkcji), ale złapał nas w połowie trasy. Reżyser chce wiedzieć, czy przeprowadzka będzie możliwa bez podziału lub łączenia grup, czy też niektórzy studenci muszą zmieniać grupy.
Wyzwanie
Biorąc pod uwagę liczbę uczniów obecnych grup i nowych sal lekcyjnych (pojemność), wyprowadzaj prawdziwą wartość, jeśli możliwe jest przypisanie innej klasy, o wystarczającej pojemności, każdej z obecnych grup, lub wartość falsey w przeciwnym razie.
Przypadki testowe
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
Notatki
- Możesz pobrać dane wejściowe w dowolnym rozsądnym formacie
- Można wyprowadzać dowolną wartość Truthy / Falsey (
1/0
,True/False
itp ...) - golf-golf
źródło
g=[1,2,3], c=[1,1,2,3]
0
obowiązuje wartość dla grup lub klas?Odpowiedzi:
Brachylog , 4 bajty
Zawsze miło jest widzieć wyzwanie i wiedzieć, że Brachylog pokona wszystkich. Bierze bieżące klasy jako dane wejściowe i nowe klasy jako dane wyjściowe; Wynikiem będzie prawda, jeśli znajdzie sposób na dopasowanie się do studentów, w przeciwnym razie fałsz
Wyjaśnienie
Kod składa się z 3 części, których kolejność w rzeczywistości nie ma znaczenia
Wypróbuj online!
źródło
Pyth, 11 bajtów
Pobiera dane wejściowe jako listę list, najpierw wielkości w klasie, rozmiary grupy w drugiej kolejności. Spróbuj go online tutaj , lub sprawdzić wszystkie przypadki testowe od razu tutaj .
źródło
Galaretka , 9 bajtów
Traktuje klasy jako pierwszy argument, a grupy jako drugi argument.
Wypróbuj online!
Skomentował
NB: To
Ṡ‘ḌẠ¬
zdecydowanie za długo. Podejrzewam jednak, że i tak nie jest to właściwe podejście.źródło
Japt , 9 bajtów
Wypróbuj lub uruchom wszystkie przypadki testowe na TIO
Wypróbuj lub uruchom wszystkie przypadki testowe na TIO
źródło
2 - n
In Japt jest wbudowany jednobajtowy kod? Jakiego rodzaju przypadki użycia musi uzasadniać, że jest wbudowanym 1-bajtem?Í
jest skrótem don2<space>
i został stworzony do użytku z ciągami znaków, konwertując je z liczb base-2 na base-10 (dość powszechna potrzeba). Jednakn
metoda zastosowana do liczby odejmuje tę liczbę od argumentu metody (domyślnie =0
). Tak więc tutaj, chociaż odejmowanie0
wystarczyłoby do posortowania tablicy w odwrotnej kolejności, użycie skrótu oszczędza mi bajtñn<space>
. Mógłbym go również użyć podczas sortowania,V
ale nie zaoszczędziłoby to żadnych bajtów, ponieważ nadal potrzebowałbym spacji, zamiast)
, aby zamknąćí
metodę.Python 2 , 49 bajtów
Sygnały wyjściowe według kodu wyjścia nie powiodły się w przypadku danych wejściowych fałsz.
Wypróbuj online!
źródło
MATL , 10 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Rozważmy wejść
[20, 10, 30]
,[20, 20, 50, 40]
jako przykład. Stos pokazano od dołu do góry.źródło
Haskell , 40 bajtów
Wypróbuj online!
źródło
05AB1E ,
14128 bajtówPort Pyth @Sok , więc pamiętaj, aby go również głosować!
Traktuje dane wejściowe jako listę list, z listą klas jako pierwszą pozycją, a listą grup jako drugą pozycją.
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Stara 12-bajtowa odpowiedź:
Najpierw bierze listę klas, a następnie listę grup.
Wypróbuj online lubsprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
C # (interaktywny kompilator Visual C #) ,
7774 bajtówWypróbuj online!
Skomentowany kod:
źródło
Haskell, 66 bajtów
Wypróbuj online!
źródło
Narzędzia Bash + GNU, 68 bajtów
69 bajtów
TIO
przyjmuje pokoje studenckie jako pierwszy i drugi argument, ponieważ liczby ciągów rozdzielonych znakiem nowej linii zwracają status wyjścia 1 dla wartości true lub 0 dla wartości false
źródło
Perl 5
-pal
,6762 bajtów@NahuelFouilleul zapisał 5 bajtów z rearanżacją i grep
Wypróbuj online!
Wersja 67 bajtów
Pobiera rozdzieloną spacjami listę rozmiarów klas w pierwszym wierszu i rozdzieloną spacjami listę rozmiarów pokoi w następnej.
źródło
Common Lisp, 74 bajty
(defun c(s r)(or(not(sort s'>))(and(sort r'>)(<=(pop s)(pop r))(c s r))))
Nie zminimalizowane
Sprawdź to
Zauważ, że sort trwale mutuje listę, a pop ponownie przypisuje zmienną do następnego elementu.
W efekcie to tylko rekurencyjnie sprawdza, czy największa grupa studentów może zmieścić się w największym pokoju. Istnieją 3 przypadki podstawowe:
źródło
Python 2 ,
716764 bajtówWypróbuj online!
źródło
zip(...)
aby zapisać 5 bajtów.Retina 0.8.2 , 50 bajtów
Wypróbuj online! Link zawiera pakiet testowy. Pobiera dwie listy grup i pokoi (zestaw testów wykorzystuje
;
jako separator listy). Wyjaśnienie:Konwertuj na unary.
Odwróć sortowanie każdej listy osobno.
Dodaj przecinek do każdej listy.
Sprawdź, czy każdy z numerów na pierwszej liście można dopasować do odpowiedniego numeru na drugiej liście. Za każdym razem
\3
zawiera poprzednio dopasowane pokoje,\2
dlatego następna grupa musi być w stanie zmieścić się w następnym pomieszczeniu. Te(?>\3?)
uchwyty przypadku pierwszego pokoju, gdy nie ma jeszcze poprzednia pokoje.źródło
Węgiel drzewny , 28 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera listę list pokoi i grup oraz wyniki,
-
jeśli pokoje mogą pomieścić grupy. Wyjaśnienie:Powtarzaj, gdy do pokoju można przypisać grupę.
Usuń największy pokój i grupę z ich list.
Sprawdź, czy nie pozostały żadne nieprzydzielone grupy.
źródło
JavaScript, 56 bajtów
Spróbuj
źródło
7
oraz9
w klasach8
i10
.Perl 6 , 34 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako listę dwóch list, grup i klas, i zwraca Brak połączenia, które można skorygować do wartości prawda / fałsz.
Wyjaśnienie:
źródło
Rubinowy , 57 bajtów
Wypróbuj online!
Trwa
c
na zajęcia,r
na pokoje. Sprawdza wszystkie permutacje pokojów zamiast sortowania, ponieważ sortowanie odwrotne kosztuje zbyt wiele bajtów. Nadal wygląda dość długo ...źródło
C # (interaktywny kompilator Visual C #) ,
1059391828179777674 bajtówTeraz pasuje do wyniku dany!
Zgłasza błąd, jeśli jest fałszywy, nic, jeśli jest prawdziwy.
-12 bajtów dzięki @Destrogio!
Wypróbuj online!
Wyjaśnienie
źródło
Java (OpenJDK 8) , 183 bajty
Wypróbuj online!
Z kilkoma przydatnymi radami Kevina Cruijssena i po prostu kolejnym spojrzeniem na mój kod, mogę obniżyć swój wynik o całe 9%, zastępując trzy angielskie słowa!
Java (OpenJDK 8) , 166 bajtów
Wypróbuj online!
źródło
import java.util.*;
w swojej liczbie bajtów. Możesz jednak golfować do 144 bajtów w Javie 8 lub 140 w Javie 10, zastępującboolean
jąvar
.true
/false
w swoim kodzie,1>0
/0>1
są krótszymi alternatywami . :)1/0
i myślę, że w tym przypadku jest w porządku, pamiętaj, że w Javie w przeciwieństwie do Pythona, JavaScript, C itp.1/0
Zwykle nie są uważane za prawidłowe dane wyjściowe true / falsey . W pierwszym komentarzu wspomniałem o wersji 144-bajtowej . :) Chociaż teraz jest również nieprawidłowy, ponieważ nie działa w ostatnim przypadku testowym, jak wspomniano w @Shaggy .PowerShell , 80 bajtów
Wypróbuj online!
Skrypt testu mniej golfowego:
źródło
R , 65 bajtów
Wypróbuj online!
źródło