Proste wyzwanie zainspirowane popularnością mojego poprzedniego wydruku niewidocznego tekstu i wydruku prawdziwych niewidzialnych wyzwań tekstowych oraz wyzwanie o tej samej długości i różnej długości .
Biorąc pod uwagę ciąg znaków składający się wyłącznie z drukowalnych znaków ( 0x20 to 0x7E
), wypisz każdy drukowalny znak nieobecny w ciągu.
Wejście
Ciąg znaków lub tablica znaków składająca się wyłącznie z drukowalnych znaków ASCII
Wynik
Każdy drukowany znak ASCII nieobecny w ciągu wejściowym, w dowolnej kolejności.
Przypadki testowe
Input: "Hello, World!"
Output: ""#$%&'()*+-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVXYZ[\]^_`abcfghijkmnpqstuvwxyz{|}~"
========
Input: "Hi!"
Output: " "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmnopqrstuvwxyz{|}~"
========
Input: ""
Output: " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
========
Input: " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
Output: ""
Punktacja
To jest golf golfowy, więc wygrywa najmniej bajtów w każdym języku
set( 'a', 'b', 'c' )
Odpowiedzi:
GS2 , 2 bajty
Wypróbuj online!
Jak to działa
źródło
Perl 6 , 29 bajtów
Zauważ, że wynik jest losowy, ponieważ Zestawy s są nieuporządkowane.
Sprawdź to
Rozszerzony:
Istnieje również wersja ASCII
∖
(-)
, ale wymagałaby spacji, aby nie została przeanalizowana jako wywołanie podprogramu.źródło
Python 3.5 , 39 bajtów
Wypróbuj online!
Zamienia dane wejściowe w zestaw i usuwa je ze zbioru zawierającego wszystkie znaki ascii
źródło
Japt , 14 bajtów
Wypróbuj online!
Zaoszczędź 4 bajty dzięki Shaggy i obarakon
źródło
127
się#
zapisać bajt i usunąćU
, aby zapisać inny.¦
i zmienić kolejność argumentów, aby zaoszczędzić kilka bajtów. Ponadto 127 można skrócić TIOHaskell, 32 bajty
Wypróbuj online!
Nudna funkcja biblioteki dla ustawionej różnicy:
Haskell, 31 bajtów
źródło
MATL , 5 bajtów
Wypróbuj online!
Dzięki Luis Mendo za grę w golfa o 8 bajtów!
Wyjaśnienie:
Różnica symetrycznych zestawów da każdy element, który jest obecny dokładnie w jednym z dwóch zestawów wejściowych. (ale nie oba) To zawsze da właściwą odpowiedź, ponieważ zestaw wejściowy zawsze będzie podzbiorem drugiego zestawu (wszystkie ASCII do wydruku).
Orginalna wersja:
Wyjaśnienie:
źródło
Brachylog , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6), 74 bajty
Jestem pewien, że jest na to krótszy sposób!
Spróbuj
źródło
Array(95)
dołączyć brakujące~
}
Mógłbym przysiąc, że ostatnia postać była, kiedy to napisałem. Naprawiono teraz, dzięki.String.fromCharCode
to dupek, dlatego! : D~
nic nie zmieniło, ale że było w specyfikacji. Ponadto część „Wypróbuj” musi zostać zaktualizowana.Grzmotnąć ,
47 4340 bajtówWypróbuj online!
Generuje zakres hexa, odwraca zrzut heksowy na char i usuwa znaki obecne w pierwszym parametrze.
źródło
Oktawa,
2220 bajtówDzięki @Luis Mendo zapisano 2 bajty.
Wypróbuj online!
Inna odpowiedź:
Wypróbuj online!
źródło
@(s)setxor(' ':'~',s)
zapisuje 1 bajt@(s)setxor(32:'~',s)
wydaje się też działać --- i ten sam komentarz do tego :-)PHP, 42 bajty
Wprowadź jako tablicę
Dane wyjściowe jako ciąg
Wypróbuj online!
PHP, 53 bajtów
Wprowadź jako ciąg
Dane wyjściowe jako ciąg
zastępuje
<?=join
sięprint_r
na wyjście jako matrycyWypróbuj online!
źródło
Step 1: automatic starting tag
cóżphp -r
... ale np. w tym przykładzie nie płaci, ponieważecho
jest dłuższy niż<?=
.CJam , 8 bajtów
Gdzie
␡
jest dosłowny znak usuwania.Wypróbuj online!
źródło
-
działa zamiast^
.Perl, 39 bajtów
Uruchom z
perl -pe
.źródło
echo 'Hello World!' | perl -pe 's!.*!"pack(c95,32..126)=~y/$_//dr"!ee'
. Działa to zarówno dla Perla v5.14, jak i v5.24.pieprzenie mózgu , 120 bajtów
Wypróbuj online!
Owinięty:
Wyjaśniono:
źródło
Ohm , 3 bajty
Wypróbuj online!
Uwaga: możesz również wprowadzić dane wejściowe jako ciąg znaków ( przykład ), ale nie powiedzie się to w przypadku pustej wielkości danych wejściowych.
źródło
Rubin,
231817 bajtówUżywa funkcji lambda zgodnie z komentarzami @ sethrin.
Poprzednie wersje:
źródło
s
musi być ani odczytywany ze STDIN, ani podawany jako argument funkcji? Wyzwanie określa również, że dane wejściowe można podać jako tablicę znaków. Przekształcenie w stabilną lambda i upuszczeniechars
daje 16-bajtowe rozwiązanie.->(s){[*' '..?~]-s)}
stdin
przypisały się do zmiennej globalnej. W Ruby$<
jest skrót,stdin
ale lambda są zwykle krótsze. Konwencje wejścia i wyjścia są tutaj . Ja też nie robię zbyt wiele, więc jeśli zasady nie są tym, co myślę, daj mi znać.APL, 13 bajtów
Bezpośredni:
źródło
R , 50 bajtów
zwraca anonimową funkcję. Konwertuje ciąg wejściowy na liczby całkowite, oblicza ustawioną różnicę między zakresem drukowania a wartościami wejściowymi, a następnie konwertuje je z powrotem na ciąg i zwraca go.
Wypróbuj online!
źródło
PHP, 53 bajty
Uruchom jako potok z
-r
.źródło
C #,
7471 bajtówOld version with creating a range for 74 bytes:
źródło
05AB1E,
54 bytes-1 thanks to Emigna
Try it online!
źródło
V, 20 bytes
Try it online!
Hexdump:
źródło
C (gcc),
7572706850 bytesTry it online!
źródło
||
to make this work on "standard" C??:
is a GNU extension. It works as well in clang and tcc though.Jelly, 8 bytes
Really, 8 bytes? Please, tell me I missed something!
Try it online!
How?
Alternatively
Since this challenge a new atom which yields all printable ASCII characters,
ØṖ
, has been introduced making the following work for 3 bytes:źródło
Charcoal,
1815108 bytesTry it online! Link is to verbose version of code. Edit: Saved 3 bytes by ranging over characters instead of integers. Saved a further 5 bytes when I discovered the undocumented
γ
variable which holds the printable ASCII characters. Saved a further 2 bytes when @ASCII-only fixed predefined inputs in verbose mode (the answer is still valid as it stands, it's only the try it online link that wouldn't have worked at the time).źródło
Mathematica, 35 bytes
Anonymous function. Takes a list of characters as input and returns a list of characters as output.
źródło
Lua, 78 bytes
źródło
shortC, 33 bytes
Conversions made in this program:
A
->int main(int argc, char **argv) {
O
->for(
@
->argv
P
->putchar
));}
The resulting program looks like:
Try it online!
źródło
Pyth, 17 bytes
The naive approach.
Explanation:
Test it online!
źródło
Clojure, 60 or 49 bytes
These "apply"s are killing me :/ Oh, if returning a list is fine then this is a bit shorter.
źródło