„Witaj, świecie!” (Wątek gliniarzy)


16

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>



13
Jak powiedziałem w piaskownicy, czuję, że jest to duplikat pytania wstrzymującego, ponieważ zamiast tego można tu zamieścić dowolną odpowiedź, ale z kodem i nieskończoną pętlą zastąpioną kodem do drukowania hello world. Nie będę jeszcze głosować, bo młotkuję, ale jestem przekonany, że to dupek.
FryAmTheEggman

5
Oczywiście sha3należ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.
flawr

1
W oparciu o odpowiedzi, które widziałem w ciągu ostatniego dnia, nie pojawiło się nic, co przekonałoby mnie, że to nie duplikat. Na razie zamierzam zamknąć wyzwanie dla gliniarzy, a jeśli społeczność się nie zgodzi, można je ponownie otworzyć, a jeśli społeczność się zgodzi, mogą zamknąć wątek rabusia.
FryAmTheEggman

1
@Dopapp zostało to już omówione, tutaj (niektóre komentarze usunięte) i na czacie. Odpowiedzi nie mogą być wklejane ani kopiowane z tego wyzwania do tego wyzwania, więc nie są duplikatami.
MD XF,

Odpowiedzi:


3

Python 3, 191 186 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.

import sys
from numpy import *
e=enumerate
c='Hello, World!'
print(''.join([c[int(sum([c*cos(n*i)for i,c in e(fromiter(sys.argv[1:],float))])+.01)]for n in[2*i+ord(n)for i,n in e(c)]]))

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:

KEJ"Hello, World!"jkm@J.Rs.e*b.t*dk1K0.e+*2kCbJ

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ź:

python3 hw.py 10.72800138 13.23008796 19.30176276 16.13233012 18.10716041 0.98306644 8.18257475 19.20292132 10.99316856 -2.15745591 6.01351144 5.45443094 10.41260889

Objaśnienie kodu:

''.join()tworzy ciąg hello world z tablicy znaków z ciągu "Hello, World!". Układanka jest rozwiązana, gdy są te wskazania [0,1,2,3,4,5,6,7,8,9,10,11,12]. Każdy indeks jest obliczany na podstawie danych wejściowych i stałych podanych w wierszu poleceń. Wejścia są twarde kodowane seria: [2*i+ord(c) for i,c in enumerate('Hello, World!')]. Tej funkcj że dotyczy wkładu, stałych, a wyjście (indeksy) jest następująca: sum([c*cos(x*i) for i,c in enumerate(CONSTANTS)]). Jest to klasyczny problem z modelowaniem, w którym próbujesz dopasować dane do swojego modelu.

Przybywając do rozwiązania, w python:

from scipy import optimize
x = [2*i+ord(c) for i,c in eumerate('Hello, World!')]
y = [0,1,2,3,4,5,6,7,8,9,10,11,12].
# make your function: 13 terms means we can achieve 13 exact outputs
def f(x,a,b,c,d,e,f,g,h,i,j,k,l,m):
    return sum([c*cos(x*i) for i,c in enumerate([a,b,c,d,e,f,g,h,i,j,k,l,m])])
# curve fit
ans,_ = optimize.curve_fit(f,x,y)
# check answer
[round(f(a,*ans),0) for a in x] # should be 0-12


2
Na wypadek, gdybyś nie wiedział, literal_eval()w astmodule można bezpiecznie ocenić wyrażenia, aby print(problem z wstrzykiwaniem kodu nie działał. Prawdopodobnie nie ma to znaczenia, ale pomyślałem, że o tym wspomnę.
Esolanging Fruit

2
jesteś pewien, że to może wydrukować Hello, World!? Jeszcze nie pękł, ale wygląda na to, że brakuje mu przecinka (tylko 12 iteracji w pętli łączenia)
Uriel

Masz rację, brakuje przecinka. Naprawię to teraz.
rexroni

@ Challenger5 dziękuję, nie wiedziałem o tym.
rexroni

12

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:

\read16to\x\message{Hello, World!}\bye

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:

^ C Ia - Pierwszy klucz to control-c, który powoduje błąd. Następnie naciskasz I (duże i), aby wprowadzić polecenie. Następnie wpisujesz (lub cokolwiek innego, co ma być składane). Zwykle po komunikacie wydrukowanym na standardowe wyjście pojawi się spacja, a następnie „)”. Gdy coś wpiszesz, informacja o czcionce będzie wyświetlana po wiadomości. Oznacza to, że wprowadzana jest nowa linia, a „)” jest przenoszony później.

To może być niedoceniane, ale nadal powinno być zgodne z zasadami gry.


Witamy w PPCG. Dobra pierwsza odpowiedź
Евгений Новиков

Czy nie wystarczy użyć tex \ Hello, world!\bye(23 bajtów)?
Werner,

@Werner, który umożliwiłby wprowadzanie danych przez użytkownika?
Gold Man

Czy to naprawdę ma być złamane? : o
Felix Palmen

3
texnicallyo Boże.
MD XF

7

> <> , 538 bajtów, Pęknięty przez rexroni

v
\">/v>v\v</>"
/!?lp%*2di%*2di
a
v   "        "       "
   "l"      "o"  /  "e"
v   "        "     " "
      "   /       "l"/
v    "!"           "
 //   " " "      \
v     \"d"o"   " "    "
      " " "   "o"r"  "!"
v"   "H"       " "    "
"l"   ""
""    "r" "         "
    \  " "l"       "d"  "
v   "     "      "  "  "H"
   "e"         /","     "
v " " "     "  " "
 "e" "W"  /"d""l"
v " " "     "  "      "
   "H"               "!"
v   "                 "
                        v
>>"Hello world?"       >o<
                        ^

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:

Zamierzonym wejściem jest OCEANICWHITETIPSHARK(to ryba!). Ścieżka przez labirynt wygląda następująco:

v
\">/v>v\v</>"
/!?lp%*2di%*2di
a                |  |
v   "        "   |  |"
| v"l"______"o"__/  "e"
v | "        "     " "
| |   "   /       "l"/
v |  "!"           "|
|//   " " "    v_\  |
v|    \"d"o"   " "  | "
||    " " "   "o"r" |"!"
v"   "H"       " "  | "
"l"___""_______ _/__/_____
""    "r" "    | |  "
|>__\  " "l"   | | "d"  "
v   "     "    | "  "  "H"
|  "e"v________/"," |   "
v " " "     "  " "  |
|"e"|"W"  /"d""l"|  |
v " " "     "  " |  | "
<  "H">__________ __\"!"__
v   "            |  | "
    >____________ __ ___v
>>"Hello world?" |  |  >o<
                 |  |   ^


Pęknięty! Zabrał mnie na zawsze.
rexroni

3
Hej, podejrzewałem, że odpowiedź może być słowem, ale nie próbowałem jej rozszyfrować. Jestem pod jeszcze większym wrażeniem.
rexroni,

6

Oktawa, 59 bajtów, Pęknięty

Działa to w Octave 4.2.0. Nie mogę zagwarantować zgodności ze wszystkimi wersjami.

i=input('');printf('%c',i*~all(isequal(i,'Hello, World!')))

Uwaga: Nie drukuje to żadnych spacji ani znaków nowej linii. Tak to wygląda:

enter image description here

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).


Nie jestem pewien, czy %coznacza sznurek, czy char ... może coś ukrywasz? *~Sprawia to, że jestem trochę podejrzliwy ...
Erik the Outgolfer

Nie jestem pewien, ale pęknięty ?
ბიმო

@BruceForte wypisuje bajt zerowy na końcu danych wyjściowych, nie jestem pewien, czy to jest poprawne ... link
MD XF

1
Jestem prawie pewien, że zamierzonym rozwiązaniem jest tego rodzaju sprawa.
Jonathan Allan,

1
@BruceForte, no. tam nie było \n. Myślałem, że tekst pytania brzmi „ opcjonalny końcowy znak nowej linii ”.
Stewie Griffin,


5

MATL , 6 bajtów. Pęknięty

tsZp?x

Wypróbuj online!


Pęknięty , ale jeśli nie jest to zamierzone rozwiązanie, to trochę przypomina oszustwo.
Dennis,

@Dennis Zamierzonym rozwiązaniem było ['Hello,' 1 'World!']. Po co oszukiwać? :-( Dokument doc / help Dmówi, że większość znaków wejściowych poniżej 32 jest zastąpiona spacją
Luis Mendo

Miałem na myśli oszukiwanie z mojej strony, przekształcanie nowej linii LF w nową linię CR + LF.
Dennis,

@Dennis Ah, rozumiem. Cóż, myślę, że jest to również całkowicie poprawne
Luis Mendo

5

Explode , 23 bajty, Cracked

@_?&4_-j>5&f^~c>&6\|4>7

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ół ( _).

&4_-j>5

Dla 4 tików ( 4) zmodyfikuj tape ( &) w dół ( _), przeskakując o 5 ( 5), odejmując ( -) 19 ( j).

&f^~c>

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).

&6\|4>7

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.


3
Pęknięty, ale możesz wyjaśnić, co się dzieje :)
Jonathan Allan

Dodane wyjaśnienie Jonathana Allana, przepraszam, że tak długo to trwało
Stephen

5

JavaScript (ES6), 173 169 163 150 151 148 143 bajtów ( pęknięty )

Miejmy coś zupełnie innego ... i całkowicie złego .

const e=eval,p=''.split,c=''.slice,v=[].every,f=s=>(t=c.call(s),typeof s=='string'&&t.length<81&&v.call(p.call(t,`\n`),l=>l.length<3)&&e(t)(t))

Stosowanie: f(something) // returns 'Hello, World!'

Wypróbuj online!




Ładny! To prawdziwy trzask.
Voile,

To było naprawdę trudne do złamania. Dobra robota!
DanTheMan,

Jest bezpośrednio pobierany z jednej z puzzli, które stworzyłem gdzie indziej :) (Pozwolę ludziom dowiedzieć się, gdzie zamieściłem oryginalną łamigłówkę.)
Voile

4

C # (.NET Core) , 130 152 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.

a=>a.Distinct().Select((x,y)=>a.Reverse().Skip(y).First()*x%255).Take(a.First()-33).Concat(new int[]{10}).Select(x=>(char)x).ToArray()

Wypróbuj online!

Liczba bajtów obejmuje również

using System.Linq;

Na początek wybrałem coś niezbyt szalonego. Może mieć wiele odpowiedzi.

„Oficjalny” crack:

. ! 0%> 5 i 8 '#?) S * TuE [MRX` + 9



4

tcc, 89 bajtów, złamany przez Dennisa

#!/usr/bin/tcc -run
#include <stdio.h>

int main()
{
    puts("\n");
}
#include "/dev/stdin"

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.


Czy możesz stworzyć działający link TIO dla ludzi do zabawy? ( To jest bez wątpienia niekompletne - być może potrzebuje kompilatora flagi czy coś, nie mam pojęcia) TBH ja nawet nie wiem, jak to ma pobierać dane ...?
Jonathan Allan

Tio Tcc nie zadziała. Nie wiadomo, że musi to być użyte jako tcc-run, a nie jako osobna faza kompilacji i łącza.
Joshua,

Może wtedy można go uruchomić przez powłokę, dostępna jest wersja bash (niewiele wiem o tcc lub bash). W przeciwnym razie uważam, że powinieneś podać kilka szczegółowych instrukcji, aby zachęcić ludzi do działania (chyba że mój osobisty brak wiedzy jest tutaj problemem - ponieważ powiedziałem, że nawet nie wiem, w jaki sposób twój kod otrzymuje jakiekolwiek dane wejściowe, widzę tylko putsi pomyślałem, że wyjść.)
Jonathan Allan,

Prawie mam crack, ale jestem na telefonie komórkowym i jestem mprotectdupkiem.
MD XF,



4

pieprzenie mózgu , 7 bajtów popękanych

,+[.,+]

Wypróbuj online!

Powodzenia. (nie działa z każdym tłumaczem BF


Does your input work with any BF interpreter, including ones with different tape lengths? Does your input work locally, and not just on TIO?
Stephen

@StepHen any length of type afaik
Christopher


1
Does your intended solution work on TIO?
totallyhuman

@totallyhuman thanks, edited the comment so it looks pro. I don't know how to put non-printable input on TIO. I passed input on stdin from a C program with a single printf statement.
rexroni

3

JavaScript (ES6), 102 bytes (Cracked)

The previous version has a massive cheese. Let's try this again...

f=s=>{let r='',i=0;while(i<13)r+=!s[i][0]||s[i]=='Hello, World!'[i]||s[i++];return r};Object.freeze(f)

Try it online!

Author solution:

new Proxy({v:Array(13).fill(0)},{get:(o,p)=>['a','','Hello, World!'[p]][o.v[p]++]})

Usage:

var p=new Proxy({v:Array(13).fill(0)},{get:(o,p)=>['a','','Hello, World!'[p]][o.v[p]++]}) console.log(f(p))



3

Cubically, 159 bytes (Cracked)

+53$!7@6:2/1+551$?7@6:5+52$!7@66:3/1+552$?7@6:5+3/1+4$!7@6:5/1+3$?7@6:5+1/1+54$!7@6:3/1+552$?7@6:5+1/1+552$?7@6:5+52$!7@6:1/1+551$?7@6:5+1/1+3$!7@6:1/1+1$(@6)7

This will be pretty easy to those who are comfortable with Cubically. Try it online!


1
Is anybody comfortable with Cubically? :P
totallyhuman

@totallyhuman The language is actually pretty simple once you get used to it, and it's fun to use!
TehPers

@totallyhuman It looks like there aren't any turning instructions, so this seems like mostly just math with multiples of 9. Very, very convoluted math.
Robert Fraser

Cracked? I think I got the intended input, but it doesn't quite work, but I'm pretty sure it fails due to an interpreter bug. See my explanation in crack post. If I am right, then you were right that it was actually darn easy : )
rexroni

3

6502 machine code (C64), 51 53 bytes (Cracked)

00 C0                     .WORD $C000     ; load address
20 FD AE                  JSR $AEFD
20 EB B7                  JSR $B7EB
8A                        TXA
0A                        ASL A
45 14                     EOR $14
8D 21 C0                  STA $C021
45 15                     EOR $15
85 15                     STA $15
49 E5                     EOR #$E5
85 14                     STA $14
8E 18 D0                  STX $D018
A0 00                     LDY #$00
B1 14                     LDA ($14),Y
20 D2 FF                  JSR $FFD2
C8                        INY
C0 0E                     CPY #$0E
D0 F6                     BNE *-8
60                        RTS
C8 45 4C 4C 4F 2C 20 D7   .BYTE "Hello, W"
4F 52 4C 44 21 0D         .BYTE "orld!", $D

Online demo

Usage: SYS49152,[x],[n], where x is a 16bit unsigned integer and n is an 8bit unsigned integer.

Input is 52768 and 23 (SYS49152,52768,23)

The second parameter is directly written to D018, a control register of the VIC-II graphics chip. Using a suitable reference, you can deduce what to write there for setting lowercase mode without changing other modes and the address of the screen memory: $17, or decimal 23. With that, you can follow the arithmetics in the code, so the first parameter ends up with the correct string address in $14/$15 (little-endian). A more in-depth explanation can be found in the crack.

Screenshot

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):

0fOa=49152to49202:rEb:pOa,b:nE
1dA32,253,174,32,235,183,138,10,69,20,141,33,192,69,21,133,21,73,229,133,20,142
2dA24,208,160,0,177,20,32,210,255,200,192,255,208,246,96,200,69,76,76,79,44,32
3dA215,79,82,76,68,33,13

Update: Added two bytes for the load address to make this an executable C64 PRG file in response to the discussion on meta


Are you sure you need to call the comma checking function at the beginning? I'm under the impression that b7eb does that check, too.
A Gold Man

b7eb calls aefd, but only after calling ad8a (parse number as float (!)(wtf)(MS)) and b7f7 (convert that float to 16bit unsigned int) -- so I have to first call aefd myself for consuming the first comma.
Felix Palmen

Cracked! Sweet sweet vengeance!
A Gold Man

@AGoldMan finally edited my post. Again, well done! Maybe I can come up with another C64 code that's a bit harder to crack (without being unfair), not sure yet :)
Felix Palmen

2

Python 2, 63 bytes, cracked

Just to get the ball rolling...

#coding:rot13
cevag vachg()==h'Hello, World!'naq'Hello, World!'

Try it online!


1
Is it generally accepted for the OP to crack submissions?
MD XF


3
That's interesting... I hadn't realized any "normal" language supports coding in ROT13 o_o
ETHproductions

13
@Arnauld And you're claiming PHP is a normal language?
NoOneIsHere

1
@NoOneIsHere Er... no. My bad. :-P
Arnauld



2

Jelly, 11 bytes (cracked)

sLƽ$Xṙ5O½Ọ

Try it online!

Intended input:

〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ〡㋄ⶐ✐сᑀ⟙ⶐⶐ〡ސЀᶑ



@HyperNeutrino Heh that was sneaky, given it lived for over half an hour. ;)
Erik the Outgolfer

Heh that's cuz I only saw it 10 minutes before seeing it ;P
HyperNeutrino



2

Python3, 192 bytes Cracked I guess

from sys import *
from numpy import *
e=enumerate
c='Hello World!'
w=eval(argv[1])
x=[ord(n)+2*i for i,n in e(c)]
print(''.join([c[int(sum([c*cos(n*i)for i,c in e(w)])+.01)]for i,n in e(x)]))

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)


4
Cracked. Lame crack, but unrestricted eval must be punished =)
Sisyphus


2

Lua 5.1, 44 bytes (Cracked)

s=...loadstring(#s>4+#s:gsub("%l","")or s)()

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:

function test(...)s=...loadstring(#s>4+#s:gsub("%l","")or s)()end

test[[
This is my input!
It can have multiple lines!
]]

Test harness on repl.it


2

C (GCC on TIO), 84 bytes golfed (Cracked)

#include<stdio.h>
main(x){scanf("%d",&x);printf("%2$s","Hello, World!\n",(void*)x);}

Here's an ungolfed version that works too:

#include <stdio.h>
int main(void)
{
    int x;
    scanf("%d",&x);

    printf("%2$s","Hello, World!\n",(void*)x);
}

2

JavaScript (ES6), 92 bytes (Cracked)

This simple string copy function seems to be really resisting you to copy any strings resembling Hello, World!...

f=s=>{let r='',i=0;while(i<13)r+=s[i]=='Hello, World!'[i]||s[i++];return r};Object.freeze(f)

Try it online!





2

JavaScript (ES6) 107 Bytes [Thanks Евгений Новиков] (Cracked)

i=r=>{for(e="",n=0;r.length>n;o=r.charCodeAt(++n),e+=String.fromCharCode(((3^o^19)<<1^15^13)<<1));return e}

Call on the i function using a string.

The console.log... is for testing purposes.

Try It Online!


Welcome to PPCG! You can save 8 bytes: (1) remove var, (2) () from one arrow-function argument, (3) replace return to eval("") (4) delete ; at the end. 110 bytes solution: pastebin.com/qwdm7fT7 Good luck
Евгений Новиков

Finally got 50 rep, so: Cracked
Voile
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.