Cel : Biorąc pod uwagę dodatnią liczbę całkowitą n
:
- Jeśli
n
jest nieparzyste, wypisz listęn
liczb najbliższych0
w porządku rosnącym - Jeśli
n
jest parzysty, wypisz wartość Falsey.
Przypadki testowe :
5 -> [-2,-1,0,1,2]
4 -> false (or any Falsey value)
1 -> [0]
Realizacja referencyjna
function update(){
var num = +document.getElementById("yield").value;
if(num){
var out = document.getElementById("output");
if(num % 2 == 1){
// base is balanced
var baseArr = [];
for(var i=0;i<num;i++){
baseArr.push(i-Math.floor(num/2));
}
out.innerHTML = baseArr.join(" ");
} else {
out.innerHTML = "false";
}
} else {
out.innerHTML = "<i>enter input</i>";
}
}
setInterval(update,1);
* {
font-family: "Constantia", "Consolas", monospace;
}
[type="number"] {
width: 10px;
width: 2em;
}
#output {
font-family: "Consolas", monospace;
}
Input: <input type="number" id="yield" value="3"> is <span id="output"><i>enter input</i></span>
code-golf
math
number
number-theory
Conor O'Brien
źródło
źródło
Odpowiedzi:
Pyth, 10 bajtów
Wypróbuj online.
Jak to działa
źródło
APL,
161513 bajtówDzięki @Dennis za -2 bajty!
Jest to monadyczny ciąg, który daje pustą tablicę do równomiernego wprowadzania. Poniżej znajduje się schemat:
Po pierwsze,
⊢×2|⊢
podaje czasy wejściowe jego mod 2; oznacza to, że szanse same się dadzą, a wyrównanie daje 0. Używamy⍳
do tworzenia listy liczb od 1 do tego (⍳0
daje pustą tablicę), a następnie odejmujemy połowę wartości wejściowej i dolnej.źródło
Mathematica,
323024 bajtówSztuczka do gry w golfa: Ostatni argument
And
nie musi być logiczny.źródło
Floor
.Range[-a,a=...]
Wydaje się również, że działa, oszczędzając kolejny bajt.OddQ@#&&Range@#-(#+1)/2&
PowerShell,
5052 bajtówNie. Całkiem szczegółowa odpowiedź. Pobiera dane wejściowe
$a
, a następnie ustawia nową zmienną$b
jako „floor” parametru$a/2
. Generuje nowy zakres liczb od(0-$b)
do$b
, następniejoin
s zakres ze spacjami i ma go jako drugi element tablicy dwuelementowej (pierwszy element to0
). Następnie używa$a%2
do indeksowania do tej tablicy w celu uzyskania danych wyjściowych.Alternatywna wersja wykorzystująca bardziej „tradycyjny” przepływ if / else, o 54 bajtach:
Edycja - Konieczne było dodanie logiki do wyświetlania wartości falsey, jeśli dane wejściowe są parzyste
źródło
(0-$b)
na just-$b
. Również samo pomnożenie przez*0
spowoduje wygenerowanie łańcucha zerowego (wartość false w PowerShell). (patrz: codegolf.stackexchange.com/a/63005/45925 )Haskell,
373631 bajtówNiezrównoważony jest wskazywany przez pustą listę. Przykład użycia:
g 7
->[-3,-2,-1,0,1,2,3]
.@ xnor znalazł 5 bajtów. Dzięki!
źródło
g n=[x|x<-[-div n 2..(n+1)/2],odd n]
jest równie długie.g n=[1|odd n]>>[-div n 2..div n 2]
g n=[1|odd n]>>take n[-div n 2..]
zapisuje również char.JavaScript (ES6),
44434241 bajtówprzekreślone 44 jest nadal regularne 44; (
Dla nieparzystych danych wejściowych zwraca tablicę liczb całkowitych o długości
x
, wyśrodkowaną na0
; nawet, zwraca 0. Myślę, że jest to tak krótkie, jak to tylko możliwe. (Zapisano kilka bajtów dzięki @ edc65 i @ ן nɟuɐɯɹɐ ן oɯ!)Alternatywa ES6: (42 bajty, dzięki @intrepidcoder)
Sugestie mile widziane!
źródło
x%2&&[for(y of...]
zapisuje bajt.n=>Array(n&1&&n--).fill().map((x,i)=>i-n/2)
jeśli dozwolone jest zwracanie pustej tablicyx=>x%2&&[for(y of Array(x--).keys())y-x/2]
ma 42.Minkolang 0,10 , 18 bajtów
Wyjaśnienie
źródło
J, 12 bajtów
Jest to czasownik monadyczny, który zwraca
0
(fałsz) liczby parzyste. Spróbuj go online z J.js .Testowe uruchomienie
Jak to działa
źródło
DUP , 31 bajtów
Try it here.
Anonimowa lambda. Stosowanie:
Wyjaśnienie
źródło
Python 2,
3432 bajtówW tej chwili nie jestem pewien, czy mogę wyprowadzić cokolwiek chcę, jeśli nie jest zbalansowane, więc obecnie to po prostu zwraca pustą listę w przypadku podstawy niezrównoważonej. Jest to anonimowa funkcja lambda, więc nadaj jej nazwę, aby z niej korzystać.
źródło
k%2*
, możesz uniknąć parens.CJam,
1312 bajtówJest to anonimowa funkcja, która wyrzuca liczbę całkowitą ze stosu i w zamian wypycha tablicę cyfr (podstawa nieparzysta) lub pustą tablicę (podstawa parzysta). Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
O, 18
Demo na żywo.
źródło
Vitsy,
2725 bajtówJutro zagram w golfa, ale naprawdę powinienem teraz iść spać.
źródło
TeaScript , 16 bajtów
18Dość proste. Znaki specjalne są w rzeczywistości tylko „skrótami” dla dłuższych sekwencji kodu.
Nadal nie tworzyłem permalinków, więc będziesz musiał skopiować wklej do interpretera
Wyjaśnienie
Ta odpowiedź nie jest konkurencyjna
źródło
F #, 38 bajtów
Wynik falsey to pusta lista.
źródło
𝔼𝕊𝕄𝕚𝕟, 21 znaków / 37 bajtów
Try it here (Firefox only).
Oto 20-znakowa / 35-bajtowa odpowiedź (niekonkurencyjna, ponieważ odpowiedź wykorzystuje zmiany wprowadzone po zadaniu pytania):
Try it here (Firefox only).
źródło
Japt,
2119 bajtówJapt to skrócona wersja Ja vaScri pt .
Dla nieparzystych danych wejściowych zwraca tablicę liczb całkowitych o długości
x
, wyśrodkowaną na0
; dla parzystych zwraca 0. Szorstkie tłumaczenie JS:gdzie
x.range(y)
tworzy listę liczb całkowitych odx
doy
. Przetestuj online!W nowoczesnym Japt jest to tylko 11 bajtów:
Wypróbuj online!
źródło
R, 30 bajtów
Mniej więcej,
x:-x
zwraca liczby całkowite odx
celu-x
, gdzie mogę ustawićx
na(1-n)/2
. Używam również współczynnika modulo-2n%%2
w definicjix
siłyx
do zera, gdyn
jest parzysta, w którym to przypadku0:0
zwraca0
(falsey).źródło
Perl, 36 bajtów
Mam wrażenie, że można to skrócić:
Range traktuje liczby zmiennoprzecinkowe jako liczby całkowite, więc np. 5/2 = 2,5 zostaje po cichu przeliczone na 2.
(Jeśli formatowanie nie ma znaczenia, usuń
$,=$";
łącznie 30 bajtów).źródło
PowerShell, 49 bajtów
Liczby parzyste obliczone do,
$false
ponieważ zapewniają puste wyjście liniowe.Liczby nieparzyste wyświetlają dokładny ciąg odniesienia. Możesz zapisać jeszcze 4 bajty (teraz
45
), usuwając[]
z ciągu wyjściowego.PowerShell, 36 bajtów
Ma to ten sam wynik falsey, ale wyświetla listę liczb oddzielonych znakami nowej linii:
źródło
Perl 6, 25 bajtów
Najkrótsze wyrażenie lambda, jakie mogłem wymyślić, które wyświetla listę, a nie zakres, to:
Testowanie:
Wykorzystuje to fakt, że Perl 6 traktuje liczbę
0
jako wartość fałszywą. Jeśli wyjście musiał być dokładnieFalse
można zastąpić$_%2
z$_!%%2
.źródło
05AB1E , 8 bajtów (niekonkurujące)
Język jest późniejszy od wyzwania i dlatego nie konkuruje. Kod:
Wypróbuj online!
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 .
źródło
PHP, 50 bajtów
program, pobiera dane ze STDIN, drukuje
_
listę rozdzielaną lub0
.lub
funkcja przyjmuje argument, zwraca tablicę lub
0
.źródło
Java, 145 bajtów
Wyjaśnienie: Przepraszam, wiem, że to jest naprawdę długie. Nie widziałem odpowiedzi dla java, więc zdecydowałem się ją włożyć. Daj mi znać, czy muszę napisać główną funkcję (nie jestem pewien, czy taka jest polityka, czy nie). Zasadniczo dzieli liczbę przez dwa i mnoży ją przez -1 dla dolnej granicy, a dla górnej granicy po prostu używa liczby podzielonej przez dwa. Jestem trochę nowa na tej stronie, więc jeśli niczego nie sformatowałem, daj mi znać. Wiem też, że odpowiedzi można skracać za pomocą funkcji lambda, ale nie wiem, jak ich używać i nie jestem pewien, czy Java je obsługuje.
Oto bardziej czytelna wersja, która jest mniej golfowa:
źródło
return
- zwracana wartość jest uzasadnioną formą wyjścia - zamiast potrzebować jej użyciaSystem.out
, chociaż w tym przypadkureturn
do pracy trzeba częściowo skonstruowane listy w ciągu). Najnowsza Java obsługuje lambdy i zwykle są krótsze niż „zwykła” definicja funkcji. (Również dlaczego wiodące białe znaki?)Rubin, 25 bajtów
źródło
Rubinowy, 27 bajtów
Tworzy anonimową funkcję lambda, która zwróci tablicę
n
liczb najbliższych 0, jeśli n jest nieparzysta, w przeciwnym razie zwraca zero (wartość falsey w ruby).Ruby zaokrągla swój podział na liczby całkowite w kierunku-nieskończoności, ale
0-n/2
jest krótszy niż-n/2+1
(ponieważ i tak jest tam znak minus), a ponieważ n jest teraz uważane za dodatnie, zaokrąglanie działa na moją korzyść.Stara wersja (28 bajtów)
źródło