Twoim zadaniem jest napisanie programu, który wypisuje dokładny ciąg znaków Programming Puzzles
(opcjonalny znak nowej linii), ale po usunięciu wszystkich spacji, tabulatorów i znaku nowej linii, wypisuje dane Code Golf
(opcjonalny znak nowej linii).
Twoja liczba bajtów to liczba pierwszego programu, ze spacjami wciąż tam.
Notatki
Spacje w
Code Golf
iProgramming Puzzles
zostaną usunięte w ramach usuwania, więc odpowiednio zaplanuj.W kodowaniach, w których 0x09, 0x0A i 0x20 nie są odpowiednio tabulatorami, znakami nowej linii ani spacjami, znaki te zostaną usunięte.
Jeśli masz kod
42 $@ rw$ @42
to musi wyjść
Programming Puzzles
. Ponadto w tym samym języku42$@rw$@42
musi generować
Code Golf
.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach! Powodzenia!
code-golf
string
source-layout
whitespace
programmer5000
źródło
źródło
Code Golf
również zostanie usunięta, a co z tą wProgramming Puzzles
.Odpowiedzi:
Python 2 , 50 bajtów
Wypróbuj online!
Po usunięciu wszystkich spacji:
Wypróbuj to online!
Dzięki Stephen S za 3 bajty i Erik Outgolfer za 1
źródło
" ">""
zwracaTrue
, ponieważ leksykograficznie spacja jest większa niż pusty ciąg. W drugim przypadku"">""
zwracaFalse
, ponieważ nic nie może być większe od siebie.True
iFalse
są właściwie1
i0
odpowiednio, tylko wbool
typie danych zamiastint
lublong
. W pierwszym przypadku spacje są zachowywane, więc pozycja o indeksie 1"Programming Puzzles"
jest zwracana dosłownie. W drugim przypadku spacje zniknęły, stąd\x20
w elemencie o indeksie 0,"Code\x20Golf"
aby zachować spację.Python 2 ,
4847 bajtów-1 bajt dzięki Erik the Outgolfer
Wypróbuj online!
Wypróbuj online!
źródło
05AB1E , 15 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C,
64625352 bajtyWypróbuj online!
Wykorzystuje fakt, że ciągi C kończą się znakiem zerowym
źródło
CJam , 38 bajtów
Wypróbuj online! lub ze spacjami usuniętymi
Wyjaśnienie
To, czy spacje są w programie, czy nie, określa, czy pierwszy ciąg jest prawdziwy, czy fałszywy.
źródło
:(
"Bncd\x19Fnke":)
zamiast tego jest szczęśliwy kod (zamień\x19
).Galaretka , 18 bajtów
Wypróbuj online!
Wyjaśnienie
W programie, jak napisano, pierwszy wiersz to funkcja pomocnicza, która nigdy nie jest uruchamiana. Drugi wiersz (ostatni w programie) jest programem głównym i stanowi skompresowaną reprezentację ciągu
"Programming Puzzles"
(który następnie jest drukowany niejawnie).Jeśli usuniesz nowy wiersz, całość stanie się jednym dużym programem.
“½ċṭ6Ỵ»
jest skompresowaną reprezentacją ciągu"Code Golf"
.ḷ
ocenia, ale ignoruje argument po prawej stronie, pozostawiając taką samą wartość jak przed uruchomieniem; może być używany do oceny funkcji pod kątem ich skutków ubocznych (coś, co zrobiłem wcześniej), ale może być również użyty, tak jak tutaj, do skutecznego komentowania kodu.Co ciekawe, rzeczywista logika jest tutaj krótsza niż pozycja 05AB1E, ale kod jako całość wychodzi dłużej, ponieważ kompresor łańcuchów jest mniej dobry w kompresowaniu tych konkretnych łańcuchów.
źródło
Galaretka , 17 bajtów
Wypróbuj online!
Jak to działa
Podobnie jak w innych odpowiedziach Jelly
Ñ1ɦ+£)G
i½ċṭ6Ỵ
zakoduj ciągi Programowanie zagadek i Code Golf .“
rozpoczyna literał ciągów i oddziela jeden ciąg znaków od drugiego, a jednocześnie»
wybiera rodzaj literału (kompresja oparta na słowniku), więc daje toṂ
następnie bierze minimum, uzyskując Code Golf .Jednak dodając spację między
½ċṭ6
iỴ
, otrzymujemy zupełnie inny drugi ciąg, a literał oceniaPonieważ caird coinheringaahing jest leksykograficznie większy niż Puzzle do programowania ,
Ṃ
wybiera zamiast tego pierwszy ciąg.źródło
“½ċṭ6Ỵ“Ñ1ɦ +£)G»Ṁ
JavaScript,
464342 bajtówźródło
\x20
pierwszy ciąg spacją.;
?;
Czasami nie są wymagane w JavaScript.\x20
z\40
zaoszczędzić :-) bajtJęzyk Wolfram, 62 bajty
Spacja w
[[0 1]]
to niejawne mnożenie, więc jest to równoważne z[[0]]
. Bez spacji01
jest po prostu1
. 0 i 1 część tego wyrażenia są ciągami, które chcemy.Inne rozwiązanie o wątpliwej ważności (44 bajty, 2 zapisane przez Kelly Lowder):
\.20
Zostaje zastąpiony spacją natychmiast po wpisaniu w środowisku Mathematica, więc nie jest jasne, czy to zostanie usunięte wraz z innymi przestrzenie ...źródło
\:0020
zamienia się w spację, a zatem zostanie usunięta, więc nie jestem pewien, czy to się kwalifikuje.\.20
Jest także krótszy. O dwa znaki."Programming Puzzles"["Code"<>FromCharacterCode@32<>"Golf"][[01]]
będzie działać.\.20
sugestię - jak to znalazłeś? Myślałem, że przeszukałem całą dokumentację…)\.20
literówkę. Wydaje się, że działa tylko w przypadku dwucyfrowych kodów znaków. Nie sądzę, że jest to w dokumentacji.Excel - 56 bajtów
Bardzo podobny do większości innych odpowiedzi ... tutaj nic szczególnego.
źródło
Haskell, 48 bajtów
Definiuje funkcję,
f
która zwraca odpowiedni ciąg.Dla porównania, stara wersja to:
Haskell, 49/47 bajtów
ze spacjami usuniętymi
Dwa proste dopasowania wzoru.
(_)
pasuje do wszystkich wzorów. Możesz poprawić wersję bez spacji o jeden bajt, definiując drugi wzorzec jakof" "=
/f""=
, ale daje to ostrzeżenie „Uzgodnienie wzorca jest zbędne”.Alternatywne rozwiązanie z tą samą liczbą bajtów:
źródło
Ohm ,
3332 bajtyWykorzystuje kodowanie CP437.
Wypróbuj online! lub spróbuj bez białych znaków
Wyjaśnienie
Z białymi znakami:
Bez białych znaków:
źródło
Code Golf
dłuższa po kompresji. Myślę, że to z powodu wielkich liter? Tak czy inaczej, jest to nadal krótsze niż normalne pisanie, ponieważ nie mogę tutaj użyć dosłownego miejsca.Japt , 29 bajtów
Ze spacjami:
Wypróbuj online!
Bez przestrzeni:
Wypróbuj online!
Wykorzystuje to fakt, że w Japt spacja zamyka wywołanie metody. W przypadku spacji kod jest mniej więcej równoważny kodowi JavaScript:
Jest to oceniane jako JavaScript, a wynik jest wysyłany do STDOUT. Ponieważ ostatnim wyrażeniem jest
"Programming Puzzles"
, ciąg ten jest drukowany.Bez spacji kod jest w przybliżeniu równoważny z:
(Jeśli do tej pory tego nie rozgryzłeś,
S
zmienna jest pojedynczą spacją)..r()
Metoda w łańcuchu, jeśli podana jest jeden argument, usuwa wszystkie wystąpienia tego argumentu z łańcucha. Ponieważ"Code Golf"
nie zawiera"ProgrammingPuzzles"
, zwraca"Code Golf"
niezmieniony, który jest następnie wysyłany do STDOUT.źródło
Brachylog , 44 bajty
Wypróbuj online!
Wyjaśnienie
źródło
po obu stronach, aby naprawić :)Alice , 44 bajty
Wypróbuj online!
Bez białych znaków:
Wypróbuj online!
Wyjaśnienie
W pierwszym programie dwa zwierciadła
/
przekierowują wskaźnik instrukcji do drugiej linii."selzzuP gnimmargorP"
przesyła wymagane punkty kodu w odwrotnej kolejności,d
przesuwa głębokość stosu i&o
drukuje tyle bajtów.@
kończy program.Bez białych znaków program znajduje się w jednym wierszu. W takim przypadku wskaźnik instrukcji nie może poruszać się w trybie porządkowym, więc
/
skutecznie stają się bezoperacyjni (technicznie, IP po prostu nie porusza się o jeden krok, to samo/
wykonuje się ponownie, a adres IP wraca do trybu kardynalnego ). Jeśli więc usuniemy je z programu, wygląda to tak:Aby uwzględnić miejsce
Code Golf
, używamy wykrzyknika i zmniejszamy go za pomocąt
. Po uzyskaniu wszystkich punktów kodu na stosie#
pomija następne polecenie, czyli cały drugi ciąg znaków.d&o
następnie drukuje stos ponownie i@
kończy działanie programu.źródło
PHP, 44 bajty
operator trójskładnikowy
PHP, 51 bajtów
komentarz
PHP, 57 bajtów
przełącznik tablicy
źródło
Common Lisp (SBCL), 52 bajty
Wydruki
Programming Puzzles
Wydruki
Code Golf
Nie golfowany:
Wyjaśnienie:
Trik polega w zasadzie na tym, jak
#'format
działa Common Lisp.W CL większość białych znaków można pominąć, pod warunkiem, że nie ma dwuznaczności co do tego, gdzie tokeny zaczynają się lub kończą. Pierwszą sztuczką było oddzielenie symboli
format
it
. Musiałem jednoznacznie zakończyćformat
symbol bez zmiany sposobut
interpretacji. Na szczęście `w CL kończy poprzedni token, zanim zostanie przetworzony, i,
anuluje efekt` (`służy do implementacji szablonów, gdzie następne wyrażenie po nim zostaje„ cytowane ”, ale każde podwyrażenie poprzedzone znakiem,
jest oceniane i wynik zawarty w szablonie, więc `, to prawie brak możliwości).Trzecim argumentem
format
jest ciąg szablonu.format
jest podobny do printf w C, ale ma znacznie potężniejsze dyrektywy formatujące i używa ~, aby je wskazać zamiast%. ~ [i ~] pozwalają wybierać spośród wielu opcji drukowania, za pomocą ~; rozdzielając je. Podany jest dodatkowy argument dotyczący formatu - którego indeks liczbowy chcesz wydrukować. Aby zapewnić przetrwanie „” w Code Golf, użyłem dyrektywy tabelarycznej ~ T, która służy do wstawiania białych znaków, ogólnie do wyrównywania tekstu w kolumnach. ~ @ T to odmiana, która po prostu wstawia określoną liczbę spacji, domyślnie 1.Wreszcie istnieją dwa argumenty do sformatowania - 0 i 1. Przed usunięciem białych znaków ~ jest używane przez ~ [~; ~] do wybrania „Programowania łamigłówek”, a dodatkowy argument formatujący (1) jest usuwany (jestem Nie jestem pewien, jak standardowe jest usuwanie argumentów dodatkowego formatu, ale działa to na Common Bank Lisp w Steel Bank). Po usunięciu białych znaków jest tylko jeden argument (01), który zamiast tego wybiera „Code Golf”.
źródło
,
jest oceniane i łączone w„ Nie jest,@
konieczne do łączenia?,
ewaluuje następne wyrażenie i uwzględnia wynik w szablonie, przy,@
założeniu, że wyrażenie przejdzie do listy i uwzględni zawartość tej listy bezpośrednio w szablonie. Tradycyjnie w społeczności lisp,@
nazywa się to „splicingiem”, ale nie jestem pewien, czy to najbardziej oczywisty wybór. Spróbuję to trochę przeredagować.Pyth, 37 bajtów
Wypróbuj tutaj.
Wypróbuj tutaj.
źródło
C #
88817063 bajtówZ usuniętymi białymi znakami:
Dzięki BrianJ za pokazanie mi, jak nie ma spacji między typem zwracanej metody a nazwą metody, PeterTaylor za zapisanie
718 bajtów i Patrick Huizinga za zapisanie 7 bajtów.Ta sama metoda, jak wszyscy inni,
technicznie można ją uznać za niepoprawną, ponieważ metoda nie określa typu zwracanego dla metody, ale między typem zwracanym a nazwą metody musi być spacja.źródło
@
, więc maszvoid@a...
i unikniesz błędu kompilacji „bez typu zwrotu” (dodaje również bajty :().Length<1
oszczędza jeden bajt;\u0020
zapisuje sześć, jeśli poprawnie policzyłem; i możesz udzielić poprawnej odpowiedzi (i zaoszczędzić kilka bajtów jednocześnie), przesyłając lambda zamiast funkcji najwyższego poziomu.Func<string>a=()=>...
@
jest używany głównie, jeśli chcesz użyć słowa zarezerwowanego jako nazwy zmiennej (odpowiednik znajduje się[]
w VB.NET (i MS SQL Server)).=>
zamiastreturn
tego nie potrzebujesz żadnych spacji. (I nawet jeśli używaszreturn
, możeszreturn(...)
).Java 8,
745048 bajtówźródło
==
operator powinien również działać,()=>""==""?"Code\u00A0Golf":"Programming Puzzles"
\u00A0
->\040
dla oszczędności 2 bajtów.Japt , 32 bajty
Wypróbuj online!
źródło
PowerShell , 56 bajtów
Wypróbuj online!
Powiedziałbym, że to dość proste, ale wykonuje zadanie
źródło
R, 50 bajtów
Myślę, że to jest to samo, co ta odpowiedź Javascript , i zasadniczo taki sam pomysł jak wszystkie inne.
źródło
> <> , 42 bajty
Z białymi znakami
Wypróbuj online!
Bez białych znaków
Wypróbuj online!
źródło
dc , 50
Wypróbuj online .
[ ]
definiuje ciąg znaków -Z
mierzy jego długość. Jeśli długość wynosi 19, wówczas zawiera spację i wywoływane jest makro przechowywane w rejestrze m, które drukujeProgramming Puzzles
i kończy pracę. W przeciwnym razieCode Golf
jest drukowany.źródło
> <> ,
4745 bajtówWypróbuj online!
Dzięki randomra za -2 (sprytne dwa
!
s, dzięki czemu mogę użyć tylko jednego>o<
.)Kod krzyczy „Flog! Flog! Flog!” i przypomina rybę.
źródło
T-SQL,
96828167 bajtówWypróbuj online | Bez przestrzeni
Stara wersja (96 bajtów):
źródło
iif(len(' x')=2
print
. Użyłem+
zamiast tego i zadziałało.Perl 5 ,
4341 bajtówWypróbuj online!
Wykorzystuje fakt, który
' '
jest prawdziwy w perlu i''
jest fałszywy.$"
Zmienna jest ustawiona domyślnie spacja.Dzięki @NahuelFouilleul za usunięcie dwóch bajtów.
źródło
"Code$\"Golf"
jest krótsza iCode.$".Golf
zbytGolfScript , 38 bajtów
Wypróbuj online!
źródło
Befunge , 76 bajtów
Wypróbuj online!
Nie jest to najbardziej kompaktowe rozwiązanie, ale pisanie kodu Befunge bez białych znaków jest dość trudne.
Na samym początku porównuje znak spacji z 0. Jeśli jest większy, przechodzi do dolnego rzędu. Jeśli tak nie jest, co dzieje się, gdy zastąpisz spację niczym, pozostanie w pierwszym rzędzie.
źródło
,
s?>:#,_
co może zaoszczędzić wiele bajtów