To jest wątek gliniarzy. Wątek rabusiów jest tutaj .
Wyzwanie polega na napisaniu programu lub funkcji, która przy określonych danych wejściowych wypisuje dokładny ciąg Hello, World!
i nową linię. Wielkie litery, odstępy i interpunkcja muszą być dokładne.
Dane wejściowe można pobierać za pomocą standardowego wejścia, pliku lub argumentów wiersza polecenia / funkcji. Dane wyjściowe można podać za pomocą wartości zwracanej, zapisu do pliku lub standardowego wyniku.
Twój program musi wydrukować Hello, World!
co najmniej jedno wejście. Kiedy twój program otrzyma niewłaściwe dane wejściowe (tj. Dane wejściowe, które nie zmuszają go do drukowania Hello, World!
), może zrobić, co chcesz - zawiesić się, wydrukować losowe bzdury, wywołać Chucka Norrisa itp.
Nie można używać algorytmu mieszającego ani żadnych podobnych metod zasłaniania wymaganych danych wejściowych.
Zgłoszenia są preferowane, aby można je było uruchamiać i krakować na TIO . Zgłoszenia, których nie można uruchomić ani nie można ich krakować w TIO, są dozwolone, ale prosimy o dołączenie instrukcji ich pobrania / uruchomienia.
Po tygodniu to wyzwanie zostanie zamknięte dla przyszłych zgłoszeń gliniarzy. Zwycięzca to najkrótszy kod, który nie jest łamany po tygodniu od opublikowania („to” to kod, a nie to wyzwanie). Zwycięzca zostanie przyjęty po dwóch tygodniach.
Po upływie tygodnia od opublikowania zaznacz swoją odpowiedź jako bezpieczną i pokaż dane wejściowe (w > ! spoiler quote
). Jeśli złodziej złamie twoje zgłoszenie (przed końcem tygodnia), oznacz je jako pęknięte i pokaż zatrzymanie (w a > ! spoiler quote
).
Szukasz nieskradzionych zgłoszeń?
fetch("https://api.stackexchange.com/2.2/questions/137742/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
sha3
należy do tej kategorii, ale poza tym, gdzie wyznaczasz granicę? Mam na myślimod 1e3
jest to również funkcja skrótu, a nawet posunę się tak daleko i argumentuję, że wiele zgłoszeń będzie funkcjami skrótu, ponieważ to wyzwanie w zasadzie tego wymaga.Odpowiedzi:
Python 3,
191186 bajtów (BEZPIECZNIE!)To samo co moja poprzednia odpowiedź, ale bez stwierdzenia noob eval, więc ktoś musi rozwiązać problem, który stworzyłem.
teraz uruchom go z poprawnymi parametrami, takimi jak
python3 hw.py 1 2 3
Edycja : poprzedniej wersji brakowało przecinka w „Cześć, świecie!”, A także zdałem sobie sprawę, że ma niepotrzebne wyliczanie, którego teraz nie ma.
Edycja 2 : Dla zabawy, oto prawie identyczna wersja Pyth (47 bajtów) tego samego kodu:
Dane wejściowe są pobierane z
stdin
listy argumentów, na przykład[1,2,3]
Nie widzę sensu w publikowaniu osobnej odpowiedzi, ponieważ jeśli złamiesz wersję Pthyon3, to również złamiesz wersję Pyth, nawet nie znając Pytha.
Odpowiedź:
Objaśnienie kodu:
Przybywając do rozwiązania, w python:
źródło
literal_eval()
wast
module można bezpiecznie ocenić wyrażenia, abyprint(
problem z wstrzykiwaniem kodu nie działał. Prawdopodobnie nie ma to znaczenia, ale pomyślałem, że o tym wspomnę.Hello, World!
? Jeszcze nie pękł, ale wygląda na to, że brakuje mu przecinka (tylko 12 iteracji w pętli łączenia)TeX - 38 bajtów Cracked (ish)
Warto spróbować, bo nie wyobrażam sobie, żeby ktokolwiek na stronie o pisaniu krótkich fragmentów kodu znałby TeXa:
Aby go uruchomić, powinieneś zdobyć jakąś formę TeXa, która pozwala na tryb interaktywny. Zapisz to w pliku i uruchom na nim TeX (lub pdfTeX, XeTeX itp.).
Edycja: Obecnie rozważam to częściowo spękane. Zamierzone rozwiązanie wykorzystuje dane wejściowe ze standardowego wejścia, ale dane teXnically ze sposobu, w jaki program jest wywoływany, są prawidłowe. Dodam bardziej przebiegłe odpowiedzi TeXa, jeśli ktoś dostanie zamierzoną metodę.
Oto zamierzone rozwiązanie:
To może być niedoceniane, ale nadal powinno być zgodne z zasadami gry.
źródło
tex \ Hello, world!\bye
(23 bajtów)?texnically
o Boże.> <> , 538 bajtów, Pęknięty przez rexroni
Wypróbuj online lub możesz skorzystać z placu zabaw dla ryb .
Pierwsze trzy wiersze odczytują ciąg STDIN i używają jego kodów znaków mod 26 jako współrzędnych, aby umieścić znaki „
>/v>v\v</>
” w labiryncie poniżej. Zamierzonym rozwiązaniem jest ciąg 20 znaków składający się wyłącznie z liter A – Z (chociaż oczywiście możesz używać wszystkiego, co chcesz).Rozwiązanie:
źródło
Oktawa, 59 bajtów, Pęknięty
Działa to w Octave 4.2.0. Nie mogę zagwarantować zgodności ze wszystkimi wersjami.
Uwaga: Nie drukuje to żadnych spacji ani znaków nowej linii. Tak to wygląda:
Mówi w zasadzie: „Wydrukuj ciąg wejściowy, chyba że jest to„ Witaj, świecie! ”, W którym to przypadku nie powinien drukować nic (lub znaku zerowego).
źródło
%c
oznacza sznurek, czy char ... może coś ukrywasz?*~
Sprawia to, że jestem trochę podejrzliwy ...\n
. Myślałem, że tekst pytania brzmi „ opcjonalny końcowy znak nowej linii ”.CJam , 7 bajtów ( pęknięty )
Wypróbuj online!
Zamierzone wprowadzenie:
źródło
MATL , 6 bajtów. Pęknięty
Wypróbuj online!
źródło
['Hello,' 1 'World!']
. Po co oszukiwać? :-( Dokument doc / helpD
mówi, że większość znaków wejściowych poniżej 32 jest zastąpiona spacjąExplode , 23 bajty, Cracked
Więcej nadchodzących, to dopiero początek> :)
Wypróbuj online!
Wyjaśnienie Eksploratora
Program obejmuje czterech odkrywców. Nie jestem do końca pewien, czy wait (
>
) działa poprawnie.Odczytaj dane wejściowe użytkownika (
?
), zapisz i przedłuż taśmę (@
) w dół (_
).Dla 4 tików (
4
) zmodyfikuj tape (&
) w dół (_
), przeskakując o 5 (5
), odejmując (-
) 19 (j
).W przypadku 16 tików (
f
) zmodyfikuj taśmę (&
) w górę (^
) w fali (~
), naprzemiennie bez wpływu, +13, bez wpływu i -13 (c
).Dla 6 tików (
6
) zmodyfikuj taśmę (&
) w obu kierunkach (|
), zmniejszając (\
) o 4 (4
) za każdym razem i przeskakując o 7 (7
). Zmniejszenie oznacza, że odejmuje 4 za pierwszym razem, 8 za drugim razem itp.źródło
JavaScript (ES6),
173169163150151148143 bajtów ( pęknięty )Miejmy coś zupełnie innego ... i całkowicie złego .
Stosowanie:
f(something) // returns 'Hello, World!'
Wypróbuj online!
źródło
C # (.NET Core) ,
130152 bajtów, PĘKNIĘTY+22 bajty, zapomniałem o końcowym znaku nowej linii ... Program działa tak samo jak poprzednio, nowy wiersz jest dodawany do dowolnego wyniku.
Wypróbuj online!
Liczba bajtów obejmuje również
Na początek wybrałem coś niezbyt szalonego. Może mieć wiele odpowiedzi.
„Oficjalny” crack:
źródło
tcc, 89 bajtów, złamany przez Dennisa
Jest to szczególnie złe ze względu na dynamiczną rozdzielczość tcc. Wiele funkcji jest wstępnie zadeklarowanych, a próba ich zastąpienia po prostu nie działa.
źródło
puts
i pomyślałem, że wyjść.)mprotect
dupkiem.Grzmotnąć , 62 bajty ( złamane przez ArchDelacy )
Brak znaków alfanumerycznych lub ukośników. Powinieneś się dobrze bawić z tym.
Wypróbuj online!
źródło
pieprzenie mózgu , 7 bajtów popękanych
Wypróbuj online!
Powodzenia. (nie działa z każdym tłumaczem BF
źródło
JavaScript (ES6), 102 bytes (Cracked)
The previous version has a massive cheese. Let's try this again...
Try it online!
Author solution:
Usage:
źródło
Cubically, 159 bytes (Cracked)
This will be pretty easy to those who are comfortable with Cubically. Try it online!
źródło
6502 machine code (C64),
5153 bytes (Cracked)Online demo
Usage:
SYS49152,[x],[n]
, wherex
is a 16bit unsigned integer andn
is an 8bit unsigned integer.Invoked with wrong values, a crash is very likely.
For cracking, you might want to run it in a local installation of vice, so here's a BASIC loader to paste into the emulator (
RUN
it to place the program at$C000
):Update: Added two bytes for the load address to make this an executable C64
PRG
file in response to the discussion on metaźródło
b7eb
callsaefd
, but only after callingad8a
(parse number as float (!)(wtf)(MS)) andb7f7
(convert that float to 16bit unsigned int) -- so I have to first callaefd
myself for consuming the first comma.Python 2, 63 bytes, cracked
Just to get the ball rolling...
Try it online!
źródło
Pyth, 18 bytes (Cracked)
This is extremely easy, and anyone that knows Pyth would crack it in the blink of an eye, but still... Note that you must put the String between quotes.
Try it online!
źródło
JavaScript (Browser only), 95 bytes (Cracked)
Not too hard. Has multiple solutions.
źródło
Jelly, 11 bytes (cracked)
Try it online!
Intended input:
źródło
05AB1E, 20 bytes (Cracked)
Shouldn't be too hard though:
Uses the 05AB1E encoding. Try it online!
źródło
Ly, 12 bytes (Cracked)
Try it online!
I don't expect this to last very long, but oh well.It didn't last very long.źródło
Python3, 192 bytes Cracked I guess
The text it reads is the first program argument:
python3 hw.py '[1,2,3]'
Don't be lame and try to put a
print("Hello World!")
statement as the argument... it prints an error afterwards anyways (at least on the command line), so I don't think that should count. (Edit: somebody did exactly that)źródło
Jelly,
2021 bytes (Cracked)+1 byte - "...and a trailing newline"
Try it online!
There are, in fact, infinite solutions.
źródło
⁸
which is for some reason missing from the TIO link, so I hope I didn't confuse myself.Lua 5.1, 44 bytes (Cracked)
Note that Lua 5.1 is a different language than Lua 5.2 or Lua 5.3. "Try it online" doesn't have Lua 5.1. You can check your Lua version by running
print(_VERSION)
. (There should be a solution in any implementation that uses PUC-Rio's Lua 5.1 core.)As a test harness, you can use something like this:
Test harness on repl.it
źródło
C (GCC on TIO), 84 bytes golfed (Cracked)
Here's an ungolfed version that works too:
źródło
JavaScript (ES6), 92 bytes (Cracked)
This simple string copy function seems to be really resisting you to copy any strings resembling
Hello, World!
...Try it online!
źródło
Röda, 71 bytes (Cracked)
Try it online!
Usage:
push(/* input */) | f()
(where f is a variable that holds the function above).źródło
JavaScript (ES6),
135119 bytes, (Cracked)Try it online!
źródło
Ruby, 88 bytes, Cracked by w0lf
Try it online!
źródło
JavaScript (ES6) 107 Bytes [Thanks Евгений Новиков] (Cracked)
Call on the
i
function using a string.The
console.log...
is for testing purposes.Try It Online!
źródło
var
, (2)()
from one arrow-function argument, (3) replacereturn
toeval("")
(4) delete;
at the end. 110 bytes solution: pastebin.com/qwdm7fT7 Good luck