Biorąc pod uwagę listę liczb całkowitych, utwórz maskę logiczną, tak aby można było użyć prawdziwych indeksów do odfiltrowania różnych wartości z listy. Który indeks jest wybrany jako prawdziwy, nie ma znaczenia, dopóki tylko jeden z nich zostanie wybrany dla każdego zestawu wskaźników odpowiadających identycznym wartościom.
Dane wejściowe będą niepustą listą liczb całkowitych nieujemnych w formacie odpowiednim dla Twojego języka, a dane wyjściowe będą listą wartości logicznych zgodnych z powyższą specyfikacją. Dozwolone jest używanie własnych definicji wartości prawdy i fałszu na liście wyników.
W poniższych przykładach określam, że jestem 1
prawdomówny i 0
jestem fałszywy.
[5, 4, 7, 1] Input
[1, 1, 1, 1] Output
Select only the values with with true indicies in the sieve
[5 4 7 1] Contains zero duplicate values
[5, 9, 7, 5, 6, 0, 5]
[0, 1, 1, 1, 1, 1, 0]
[ 9, 7, 5, 6, 0 ]
Przypadki testowe
Gdy występuje or
, oznacza to, że istnieje wiele prawidłowych wyników. Jeśli ...
po elipsie występuje końcowa elipsa or
, oznacza to, że nie wszystkie możliwe wyniki zostały wymienione.
[0] = [1]
[55] = [1]
[32, 44] = [1, 1]
[0, 0] = [1, 0] or [0, 1]
[9001, 9001, 9001] = [1, 0 , 0] or [0, 1, 0] or [0, 0, 1]
[5, 4, 7, 1] = [1, 1, 1, 1]
[1, 2, 3, 4, 3, 5] = [1, 1, 1, 1, 0, 1] or
[1, 1, 0, 1, 1, 1]
[5, 9, 7, 5, 6, 0, 5] = [1, 1, 1, 0, 1, 1, 0] or
[0, 1, 1, 1, 1, 1, 0] or
[0, 1, 1, 0, 1, 1, 1]
[0, 8, 6, 6, 3, 8, 7, 2] = [1, 1, 1, 0, 1, 0, 1, 1] or
[1, 0, 0, 1, 1, 1, 1, 1] or
[1, 0, 1, 0, 1, 1, 1, 1] or
[1, 1, 0, 1, 1, 0, 1, 1]
[45, 47, 47, 45, 24, 24, 24, 8, 47, 41, 47, 88]
= [1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1] or ...
[154, 993, 420, 154, 154, 689, 172, 417, 790, 175, 790, 790, 154, 172, 175, 175, 420, 417, 154, 175, 172, 175, 172, 993, 689, 993, 993, 790]
= [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] or ...
Zasady
- To jest golf golfowy, więc wygrywa najkrótsze rozwiązanie.
- Wbudowane są dozwolone!
- Dozwolone jest używanie własnych definicji wartości prawdy i fałszu na liście wyników. Jeśli zdecydujesz się to zrobić, podaj swoje definicje.
- Dane wejściowe będą niepustą listą nieujemnych liczb całkowitych.
- Możesz swobodnie wybierać między wyjściem tylko z jednego sita lub z wielu, a nawet z nich wszystkich. Dopóki każde sito jest ważne, będzie akceptowane.
[0, 8, 6, 6, 3, 8, 7, 2]
czy[1, 0, 0, 1, 1, 1, 1, 1]
należy dodać do listy prawidłowych wyników?Odpowiedzi:
MATL,
764 bajtów1 bajt zapisany dzięki @Luis
2 bajty zapisane dzięki @Dennis
Definiujemy
1
jako prawdę, a wszystkie inne wartości określamy jako falseyWypróbuj online
Wszystkie przypadki testowe
Wyjaśnienie
źródło
&=Rs1=
l=
.Galaretka , 4 bajty
Sprzyja ostatnim wystąpieniom. Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Python 3,
47353936 bajtówWyskakuje pierwszy element z listy, sprawdza, czy istnieje on gdzie indziej na liście, i wstawia
True
lubFalse
do nowej listy.W przypadku tej funkcji
False
wskazuje odrębną wartość orazTrue
poza tym jest (True=0
iFalse=1
)Dzięki Dennis za tonę bajtów
Oryginał, 47 bajtów:
Spróbuj
źródło
lambda n:[1-(n.pop()in n)for x in n*1]
oszczędza kilka bajtów.lambda n:[n.pop()in n for x in n*1]
działa..pop(0)
lub maska wyjdzie odwrócona..pop()
przetwarza ostatni element, więc są w odwrotnej kolejności.Pyth, 6 bajtów
Wyświetla listę booli (
True
iFalse
). Sprawdza każdy element na wejściu, czy jego indeks jest równy indeksowi pierwszego wystąpienia wartości. Innymi słowy, sprawdza się, czy każdy element występuje po raz pierwszy.W pythonowym pseudokodzie:
Sprawdź to tutaj.
źródło
J , 2 bajty
Stąd pomysł na to wyzwanie. Wbudowane
~:
jest wywoływaneNub-Sieve
w J i tworzy listę logiczną, która wykonuje operację opisaną w wyzwaniu. Tutaj1
reprezentujetrue
i0
reprezentujefalse
.źródło
05AB1E , 8 bajtów
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
APL, 6 bajtów
Spróbuj
Wyjaśnienie:
źródło
C #, 63 bajty
Mógłbym również sprawić, że zwróci 1 lub 0, a termby sprawi, że parametr i typ zwrotu będą takie same, pozwalając mi zrobić to samo wyrażenie lambda?
mile widziane niektóre wskazówki
ten sam kod typu
źródło
Python, 35 bajtów
Wykorzystuje
True
jako wartość fałszowania iFalse
jako wartość prawdziwości. Oznacza ostatni wygląd każdego elementu.Wybiera pierwszy element tylko wtedy, gdy nie pojawia się wśród pozostałych elementów, a następnie powraca do reszty listy, o ile nie jest pusty.
l.pop(0)
Wyodrębnia pierwszego elementu, a także usuwania.źródło
Siatkówka , 23 bajty
Dane wejściowe to lista rozdzielona spacjami. (W rzeczywistości inne formaty, takie jak,
[1, 2, 3]
będą również działać, o ile przed każdym numerem będzie spacja oprócz pierwszego).Wypróbuj online! (Działa jednocześnie na wielu przypadkach testowych oddzielonych od linii).
Po prostu zamieniamy każdy element,
0
jeśli w jego danych wejściowych pojawi się kolejna jego kopia, i1
inaczej.źródło
PowerShell v2 +, 40 bajtów
Tworzy pustą tablicę
$a
. Następnie bierzemy listę danych wejściowych$args[0]
i łączymy ją w pętlę|%{...}
. Każda iteracja możemy wybrać jedną1
lub0
z pseudo-trójskładnikowego podstawie tego, czy obecny jest elementem$a
czy nie. Wybory te pozostaną w przygotowaniu. Następnie dodajemy bieżący element do tablicy$a
. Elementy potoku są gromadzone, a dane wyjściowe jako tablica są niejawne.Przykład:
(wyjście tutaj z separatorem nowej linii, ponieważ jest to ustawienie domyślne
.ToString()
dla tablicy)źródło
JavaScript (ES6), 31 bajtów
Zero jest prawdziwe, a inne liczby to fałsz.
źródło
Mathematica,
5331 bajtówDzięki milom za pomysł, który zaoszczędził 22 bajty.
źródło
MapIndexed
z poprzednich list?MapIndexed[s[[;;#-1&@@#2]]~FreeQ~#&,s=#]&
zajmuje 41 bajtów.MapIndexed
tego przypadku i nawet nie musisz wyodrębniać ani zmniejszać indeksuPerl 5
źródło
..
zapewnia kontekst skalarny, więc nie powinieneś go potrzebować~~
. 2.grep
zwraca wartość prawda / fałsz, więc nie powinieneś tego potrzebować?1:0
. 3.grep/.../,@a
jest krótszy niżgrep{/.../}@a
. 4. Nie powinieneś potrzebować finału;
. 5. Nie powinieneś potrzebować nawiasów w pobliżu1..@a
. 6. Nie pokazujesz, skąd pochodzi dane wejściowe lub wyjściowe: patrz meta.codegolf.stackexchange.com/q/2447Java, 96 bajtów
Zmienia tablicę w miejscu. Sprzyja ostatniemu wystąpieniu.
Prawdziwą wartością jest
1
wartość falsey0
.Sprawdź wszystkie przypadki testowe .
Nie golfowany:
źródło
Właściwie 11 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Pyke, 4 bajty
Wypróbuj tutaj!
źródło
C ++, 242 bajty
Trzeba przyznać, że rozwiązanie to jest nadmierne, ponieważ działa na każdym standardowym pojemniku dowolnego zamówionego typu:
Nie golfowany:
(i dalej uogólnione)
Zestaw testowy:
źródło
TSQL 52 bajty
Skrzypce
źródło
PHP,
666239 bajtówz wyjątkiem wartości, które mają wartość false (false, 0, „”) i ciągi liczbowe („1” równa się 1)
nowa wersja (program, 37 + 2 bajty)
bije Javę i (teraz znowu) C #. Nawet prawie bije teraz Pythona. Szczęśliwy.
0
(prawda) i1
(fałsz)wkładka
!
poprint
odwrócićregister_globals=On
,short_open_tags=On
aerror_reporting=0
wphp.ini
zaphp-cgi
wywołujemy
php-cgi -f <filename> a[]=<value1> a[]=<value2> ...;echo""
;$a
z$_GET[a]
(+6), zestawshort_open_tags=On
ierror_reporting=0
$a
zarray_slice($argv,1)
(+19), usunąć<?
(-2)i połączenia
php -d error_reporting=0 -r '<code>' <value1> <value2> ...;echo""
stara wersja (funkcja, 62 bajty)
false
for true itrue
false; (ouput jako pusty ciąg lub1
)wstaw
!
po$m[]=
aby odwrócićtesty (na starej wersji)
źródło
Haskell,
2927 bajtówUżywa
False
jako true,True
jako false wartość:Być może będziesz musiał
import Data.List
użyć,tails
ale tryhaskell.org uruchamia kod w obecnej postaci.źródło
\a->[...]
jest właściwą funkcją. W przypadku wątpliwości należy nadać mu nazwę:f a=[...]
.import Data.List
bardzo częstego pomijania . za. jest bardzo śliskim nachyleniem, ponieważ w konfiguracji GHCi można umieścić dowolną liczbę importów (a nawet definicji!). b. traktuje tryhaskell.org jako autorytatywną implementację języka Haskell, ale tak naprawdę tak nie jest. (Ponownie, co jeśli utworzę własne środowisko try-Haskell-online, które zawiera wszystkie importowane i definicje, których golfiści mogliby kiedykolwiek chcieć? Czy to wciąż naprawdę „Haskell”?)Perl 5+ Perligata , 343 bajty
315 bajtów plus 28 dla
-MLingua::Romana::Perligata
Użyj jako
perl -MLingua::Romana::Perligata foo.pl
; input (od stdin) i output (do stdout) to oddzielone podkreśleniem ciągi liczb całkowitych dziesiętnych. Testowane na Strawberry 5.20.2 z wersją 0.6 Perligata; Nie wiem, czy to działa z wersją Perligata 0.50.Oczywiście jest to jasne jak dzwon. Jeśli tak nie jest, uruchom go
-MLingua::Romana::Perligata=converte
zamiast zamiast-MLingua::Romana::Perligata
, iperl
zamiast uruchomić skrypt, wypisze tłumaczenie na zwykły Perl:Do analizy token-by-token użyj
-MLingua::Romana::Perligata=discribe
.Uwagi do gry w golfa:
.
.scinde
nie potrzebuje drugiego argumentu i używahoc
.ao aum tum nullum addementum da
ponieważ nie mogłem dostaćmorde
do pracy.per ium in qis... ro I da
ponieważ nie mogłem dostaćvanne
do pracy.huic vestibulo perlegementum da
próbowałem-pMLingua::Romana::Perligata
, ale też nie mogłem go uruchomić.Tylko dla kopnięć (chociaż cała ta odpowiedź była tylko dla kopnięć):
Huic vestibulo perlegementum da. Qis lacunam scindementa da. Dum qis fac sic ao qis decumulamentum da. Ao aum tum nullum addementum da. Meo io. Meo ro. Per ium in qis fac sic si ium tum aum aequalitas fac sic ro I da cis cis. Ro nullum tum non rum addementum da. Capita bis rum cis. Per in bis fac sic hoc tum lacunam egresso scribe cis.
Tłumacz Google dajeThis court perlegementum grant. QIS gap scindementa grant. While QIS QIS decumulamentum do so ao da. Ao sum and no addementum grant. My io. My ro. Through ium in QIS do so if the sum ium equality do so ro 1 from cis. Ro was not any rum addementum grant. The heads of the bis side. Write, do so as soon as he at that time that in the gap by the Kish was taken.
.źródło