Prawdopodobnie proste wyzwanie w golfa. Biorąc pod uwagę 2 dodatnie liczby całkowite m
i n
utwórz listę n
wartości, które są dodatnimi liczbami całkowitymi, których suma jest równa liczbie m
. Albo wszystkie wartości na wyjściu mają tę samą wartość, albo różnica wynosi dokładnie 1.
Przykłady
Na przykład
m=6
in=3
stałby się2, 2, 2
m=7
in=3
stałby się2, 2, 3
lub2, 3, 2
lub3, 2, 2
m=7
in=2
stałby się3, 4
lub4, 3
m=7
in=1
stałby się7
m=7
in=8
spowodowałoby błąd, ponieważ suma 8 dodatnich liczb całkowitych nie może wynosić 7.m=10
in=4
stałby się3, 3, 2, 2
lub inną permutacją
Zasady
- Zarówno wejście, jak i wyjście dotyczą wyłącznie liczb całkowitych dodatnich.
- Albo wszystkie wartości na wyjściu mają tę samą wartość, albo różnica wynosi dokładnie 1.
- Kolejność wartości na liście nie jest ważna.
- Suma wartości na liście jest równa
m
. - Jeśli nie da się go rozwiązać, wygeneruj błąd lub fałszywą wartość (na przykład w przypadku m = 7 i n = 8).
- W wyniku innych zasad
m=8
in=3
będzie generować dowolny z permutacji3, 3, 2
(nie2, 2, 4
)
Zwycięzca
To jest golf golfowy, więc wygrywa najkrótsza ważna odpowiedź - mierzona w bajtach.
float a = -0f, b = 0f; System.out.println(a == b); System.out.println(a + "," + b);
... produkujetrue
i-0.0,0.0
. Widzisz, dodatnie 0 i ujemne 0 są wyraźnie dwiema różnymi liczbami ... implementacja tak mówi!Odpowiedzi:
Gaia , 4 bajty
Jest prawie wbudowany w to ...
Wyjaśnienie
źródło
Python 2 ,
4843 bajtówZwroty
0
w przypadku błędu.Wypróbuj online!
41 bajtów (z trikiem @ xnor)
Zgłasza
NameError
błąd.Wypróbuj online!
źródło
Mathematica, 33 bajty
Wejście
wynik
Wyjścia Fałsz , gdy nie jest rozwiązywalne
źródło
MATL , 7 bajtów
Gdy nie ma rozwiązania, wynikiem jest tablica zawierająca co najmniej jedno zero, co jest fałszem w Mátl.
Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
m = 10
in = 4
.źródło
Haskell , 30 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 15 bajtów po zastosowaniu NDD 1
Wypróbuj online!
Nic nie wyświetla, jeśli nie ma rozwiązania. Link do pełnej wersji .
1 NDD = Rozwój oparty na Neilu.
Moja poprzednia odpowiedź:
Węgiel drzewny ,
32 27 2420 bajtówWypróbuj online!
Nic nie wyświetla, jeśli nie ma rozwiązania. Link do pełnej wersji .
Oczywiście nie byłbym w stanie grać w golfa bez pomocy Neila.
źródło
Cast
operatora działa z jakiegoś powodu, ale nie jest to idealny algorytm ... Mam rozwiązanie 16-bajtowe.Cast
działa na listach, mam do 11 bajtów ...Map
, jak to działa na Ziemi?Map
jest jak wersja wyrażeniafor
, aż do użycia tej samej zmiennej pętli. Zatem w twoim przykładzie, zamiast wypychania wyrażenia na listę za każdym razem,Map
automatycznie zbiera je i ocenia na listę wyników.R , 33 bajty
Port odpowiedzi Octave Luisa Mendo . Bardzo smutne, że jest to prawie 50% krótsza niż moja poprzednia odpowiedź.
Wypróbuj online!
poprzednia odpowiedź, 63 bajty:
Anonimowa funkcja, która przyjmuje dwa argumenty (obowiązkowe)
m
in
oraz dwa opcjonalne, które są dla celów golfa. Zwraca wektor w kolejności rosnącej. W przypadku awarii pierwszą wartością będzie0
falsey w R, ponieważif
używa tylko pierwszej wartości wektora (z ostrzeżeniem).Jest to zasadniczo odpowiednik następującej funkcji:
Wypróbuj online!
źródło
pryr::f(diff(trunc(0:n*m/n)))
działa i jest krótszy!Galaretka ,
76 bajtówWypróbuj online! Nie daje nic dla fałszu.
Jak to działa
źródło
TI-Basic, 23 bajty
Zwraca ERR: PODZIAŁ NA 0 w przypadku błędu
źródło
Oktawa , 24 bajty
Kod definiuje anonimową funkcję. Dane wyjściowe to tablica liczbowa (wektor wiersza). Gdy nie ma, tablica zawiera co najmniej jedno zero, co w Octave jest fałszem .
Wypróbuj online!
Wyjaśnienie
0:m/n:m
tworzy tablicęn+1
wartości od0
dom
z krokiemm/n
.fix
zaokrągla każdy wpis0
idiff
oblicza kolejne różnice.Na przykład, są tu wszystkie pośrednie wyniki
m = 7
,n = 3
:źródło
Haskell ,
938988878671 bajtówWypróbuj online!
Wyjaśnienie
Główną funkcją jest tutaj
e
.e
pobierze listę i zasadniczo poprowadzi wałek do ciasta wzdłuż niej od lewej do prawej. Podczas gdy na liście znajduje się element, który jest większy od sąsiada po prawej, przesuniemy jeden z niego w prawo.Teraz wszystko, co musimy zrobić, to nakarmić tę funkcję wystarczająco nachyloną listą i pozwolić jej wykonać magię. Po liście, którą wybieramy,
m
następujen-1
zero. Ponieważ jest to łatwe do zrobienia.Ostatnią rzeczą, którą musimy zrobić, to upewnić się, że sprawa błędu jest obsłużona. W tym celu po prostu wyrzucamy
Non-exhaustive patterns in function
błąd tak długo, jakm>n
.źródło
error[]
nie dokonując z niewyczerpujący wzoru zamiast:m!n|m>n=e$m:replicate(n-1)0
.(0<$[1..n-1])
Jest także krótszy niżreplicate(n-1)0
.C # (.NET Core) ,
868271 bajtówzgłasza błąd dla nieprawidłowych danych wejściowych.
Wypróbuj online!
-4 bajty dzięki TheLethalCoder
-11 bajtów dzięki OlivierGrégoire
źródło
a=>b=>
na początku.using System.Collections.Generic
jeśli zwracamIEnumerable<int>
?IEnumerable<int>
byłoby w definicji funkcji, nie musisz dołączaćusing
.Haskell, 48 bajtów
Zacznij od listy
n
zer. Powtórzm
czasy: weź pierwszy element, dodaj jeden i umieść go na końcu listy.Nie powiedzie się z błędem dopasowania wzorca, jeśli
n < m
.Wypróbuj online!
źródło
Braingolf , 30 bajtów
Wypróbuj online!
Pobiera dane wejściowe w odwrotnej kolejności (
n
jest to pierwsze wejście,m
drugie )Podziały
m
wedługn
, powiela wynikn
razy, a następnie poprzez pętle i przyrosty jeden przez jedenm % n
razyźródło
Partia, 71 bajtów
cmd/cset/a
nie wyświetla żadnego separatora, więc muszę go użyćecho(
((
unika drukowaniaECHO is on.
).źródło
PHP> = 7.1, 62 bajty
PHP Sandbox Online
źródło
Python 2 , 41 bajtów
Wypróbuj online!
NameError
kiedy niemożliwe.Python 2 , 43 bajty
Wypróbuj online!
ValueError
kiedy niemożliwe.źródło
NameError
wyjścia przez błądJavaScript (ES6),
57 56 5341 bajtówOdpowiedź zawiera teraz mądrzejszy sposób tworzenia wartości. Dzięki @Neil
Stosowanie
Historia
Pierwsza moja
Następnie dodano operator rozprzestrzeniania i składnię curry z końcówką @Arnauld
źródło
_=>m++/n|0
zapisuje kilka bajtów.Java (OpenJDK 8) ,
8073636159 bajtówWypróbuj online!
Uwaga, w celu curry
m
in
są odwrócone.źródło
Pyth , 11 bajtów
Wypróbuj online!
źródło
Pyth , 13 bajtów
Wypróbuj online! Dane wyjściowe
0
w przypadku błędu.Oszukiwanie, 6 bajtów
Wypróbuj online! Tablica zawiera
0
błąd. Niestety w Pyth to nie jest fałsz .Wyjaśnienie
źródło
CJam ,
1312 bajtówWypróbuj online!
Jest to anonimowy blok, który przyjmuje dane wejściowe jako
n m
na stosie. To byłaby dobra odpowiedź, ale wymóg obsługi błędów całkowicie go zabił.Błędy z dzieleniem przez zero, gdy nie można rozwiązać.
Wyjaśnienie
Jeśli zniesiono wymóg obsługi błędów, można go skrócić do 7 bajtów, co stanowi spadek o ponad 40%:
źródło