Witaj świecie z niespodzianką


17

Twój cel : napisanie kodu, który da klasyczny wynik „Cześć, świecie!” drukowane do STDOUT lub równoważnego.

Reguły : Kod musi być w całości drukowany ASCII. Cały kod musi być funkcjonalny - usunięcie dowolnego pojedynczego znaku zliczającego musi zmienić wynik lub spowodować, że kod nie będzie działał. Wszystkie zmienne muszą być użyte po przypisaniu. Literały znakowe i łańcuchowe muszą być niezbędne do uzyskania danych wyjściowych - to znaczy zastąpienie dowolnego literału znakowego lub dowolnego znaku w łańcuchu literowym innym znakiem musi być zdolne do zmiany wyniku (a nie poprzez efekt sekwencji ucieczki - zastąpienie znaku odwrotnym ukośnikiem lub odpowiednik)

(UWAGA: Ostateczna reguła została edytowana w)

Punktacja : Tutaj robi się ciekawie. Najwyższy wynik wygrywa według liczby znaków, zgodnie z typowymi regułami kręgli kodowych. Jednak wielokrotne użycie znaków spowoduje odjęcie punktów. Konkretnie...

  1. Wielokrotne użycie dowolnego znaku alfanumerycznego (az, AZ, 0-9) spowoduje odjęcie 3 punktów za powtórzenie (pierwsze użycie nie spowoduje odliczenia).
  2. Powtarzające się stosowanie podstawowej interpunkcji ([!? .-, ": ';]) - łącznie z nawiasami - spowoduje odjęcie 2 punktów za powtórzenie.
  3. Wielokrotne użycie innych znaków ASCII {`~ @ # $% ^ & * _ + = | \ /> <} - łącznie z nawiasami klamrowymi - spowoduje odjęcie 4 punktów za powtórzenie.
  4. Wielokrotne użycie spacji, tabulatorów i znaków nowej linii spowoduje odjęcie 1 punktu za powtórzenie. Oznacza to, że tylko pierwsze użycie spacji, tabulacji lub nowego wiersza będzie się liczyło do sumy całkowitej.

Uwaga: komentarze nie liczą się do sumy, chociaż znaki oznaczające początek / koniec komentarza. Na przykład w C / C ++, jeśli masz /* This is a comment */, to policzy dwa ukośniki i dwie gwiazdki, ale nic między nimi.

Kilka przykładów (uwaga: użycie Julii jako przykładowego języka) ...

print("Hello, world!");

Wszystkich widocznych znaków: 22
Zawiera spację: +1
Powtarzane
znaki alfanumeryczne: -12 dla ll Powtarzana interpunkcja: -2 dla „
Wynik końcowy: 22 + 1-12-2 = 9

print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII

Wszystkie znaki: 43 (nie liczy żadnych znaków po #, który jest znakiem komentarza)
Zawiera spację: +1 Powtarzane znaki
alfanumeryczne: -18 dla rr1008
Powtarzane znaki interpunkcyjne: -24 dla () „” „” „,,,,
Końcowy wynik: 43 + 1-24-18 = 2

xy=STDOUT
m="Hello, world!"
print(xy,m);

Wszystkich widocznych znaków: 37
Zawiera nowy wiersz : +1
Zawiera spację: +1
Powtarzane
znaki alfanumeryczne: -18 dla ksyllor Powtarzane znaki interpunkcyjne: -4 dla „,
Powtarzane inne ASCII: -4 dla =
Wynik końcowy: 37 + 1 + 1-18-4 -4 = 13

Kilka nieprawidłowych fragmentów kodu ...

x=2;print("Hello,world!")  

Problem: xjest przypisany, ale nieużywany.

print("Hello,"*" world!")  

Problem: *jest niepotrzebny, bez niego wynik będzie taki sam.

k=1
if k>0
  print("Hello, world!")
else
  print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end  

Problem: Drugie printpolecenie nie zostanie uruchomione. Również usunięcie znaków w cudzysłowie w drugim printpoleceniu nie zmieni wyniku.

x="Hello, world!";
print(x)  

Problem: usunięcie znaku nowej linii nie zmieni wyniku ani nie spowoduje błędu (w Julii średnik jest konieczny tylko wtedy, gdy wiele poleceń znajduje się w tym samym wierszu, w przeciwnym razie po prostu pomija wartość zwracaną).

print("Hellos\b, world!")  

Problem: spostać nie wpływa na wynik, ponieważ zostaje skasowana \b. Jest to dopuszczalne, jeśli jest wykonane za pomocą code ( "Hello",char(100),"\b, world!"), ale nie można tego zrobić za pomocą literałów łańcuchowych lub literowych.

Wygodny kalkulator wyników - http://jsfiddle.net/4t7qG/2/ - dzięki Doorknob



1
Wydaje się, że ma to znaczenie dla twojej dyskusji meta.codegolf.stackexchange.com/questions/777/…
Martin Ender

3
Stworzyłem JSFiddle, w którym możesz umieścić swój kod, który automatycznie obliczy Twój wynik. Czy zgadzasz się ze mną, edytując link do niego w poście?
Klamka

1
@Dennis - jeśli twój program tworzy nowy wiersz z powodu polecenia, nie ma problemu (na przykład println w Julia drukuje, a następnie dodaje nowy wiersz na końcu). Ale to nie powinno być częścią ciągu.
Glen O

1
@ACarter - w zasadzie tak. Ale ograniczenia i potrącenia sprawiają, że nie jest to trywialne.
Glen O

Odpowiedzi:


17

Perl - 96

(Całkiem dobrze, biorąc pod uwagę teoretyczny wynik maksymalnie 97)

s{}[Hel0o, w3$=d!];y<"#%&'*.124578:?@BCDEFGIJKLMNOQ/-9>(
    6PRSTUVWXYZ^_`abfghjmqvxz|~\cAk-u)+print

(Zauważ, że drugi wiersz zaczyna się od rzeczywistego \tznaku tabulacji)

Kod składa się z 98 znaków i zawiera każdy znak ascii dokładnie raz, plus dodatkowo -.
98 - 2 = 96

Nie ma tu literałów łańcuchowych , ale usunięcie dowolnego pojedynczego znaku psuje program.

Odbarwienie

W tym programie są 3 instrukcje (właściwie 2, ale wykorzystałem +jako separator instrukcji)

  1. s{}[Hel0o, w3$=d!]
    To bardzo rozciągnięty przypadek operatora sed. Jest to częściej pisane jako s/a/b/, lub s:a:b:, ale Perl pozwala tutaj na więcej fantazji: s(a)(b) s(a)^b^ s(a)[b]a nawet s qaqbq.
    Zastępuje pusty ciąg (wewnątrz {}) przez Hel0o w360d!(wewnątrz []) ( $=interpoluje 60domyślnie). Z powodu braku ~=operatora działa $_.

  2. y<"#%&'*.124578:?@BCDEFGIJKLMNOQ/-9>(\n\t6PRSTUVWXYZ^_`abfghjmqvxz|~\cAk-u)
    Jest to również bardzo rozciągnięty przypadek, ale troperatora, który jest również nazywany y( y< >( )).
    Spójrzmy na tabelę wymiany:
    " # %&'*.124578:?@BCDEFGIJKLMNOQ /-9
    \n\t6PRSTUVWXYZ^_`abfghjmqvxz|~\cA k-u
    przesunąłem kilka znaków, aby istniejący ciąg nie został zerwany. Jedyną działającą częścią tutaj jest /-9-> k-u. Zastępuje on 0z l, 3z o, i 6z r.
    Ponownie z powodu braku ~=operatora, działa on $_
    Więc teraz mamy pełną frazę w $_zmiennej.

  3. print
    Brak argumentów powoduje, że wypisuje tylko $_zmienną.


Nie znam Perla na tyle, żeby to skomentować - co robi zestaw znaków między <a +?
Glen O

@ Tylko GlenO /-9i k-usą faktycznie używane do transformacji łańcucha. Reszta to śmieci równej wielkości . Jeśli usuniesz tylko jeden znak, zestawy nie będą wyrównane, a program nie wyświetli komunikatu „Cześć, świecie!” już.
mniip

W takim przypadku w jaki sposób wykonywane są „śmieci”? To znaczy w jaki sposób działa? Jeśli jest to tylko wypełniacz, który przeskakuje kod, oznacza to, że kod nie jest uruchomiony w warunku.
Glen O

3
@GlenO To nie jest. Do specyfikacji: <...> removal of any single counting character must change the result or cause the code to not function.Usunięcie 1 znaku gdziekolwiek go psuje. Możesz sprawić, by działało, usuwając 2 znaki, ale nie jest to zgodne z regułami.
mniip

2
All code must be functional. Przynajmniej wyraźnie naginasz zasady. Nie mówię wprost, że „łamie zasady”, ale jest to zdecydowanie wątpliwe.
Glen O

7

Ta odpowiedź została utworzona przed dodaniem reguły dotyczącej literałów łańcuchowych i nie bierze udziału w konkursie.

#include <iostream>
int main(){std::cout<<56+"  !$%^&*?12347890-_QWERTYUIOPASDFGJKLZXVBNM,.qypfghjk:zvbHel\x6Co, world!";}

To całkowicie legalne. : P Jeśli usuniesz dowolny znak z tego ciągu, zostanie wydrukowany ello, world!.


W odpowiedzi podaj wynik swojego kodu.
ProgramFOX

Nie zmieni to również twojego wyniku, ale przestrzenie wokół <<muszą zostać usunięte.
Martin Ender

1
Hmmm ... choć oklaskiwam twoją odpowiedź, przede wszystkim ujawniła niewielką dziurę w moich ograniczeniach. Mam zamiar dać ci głos i cieszę się, że inni mogą zrobić to samo, jeśli im się spodoba, ale będę edytować z dodatkowym ograniczeniem.
Glen O

1
OK, w nawiązaniu do mojego poprzedniego komentarza, dodałem teraz ograniczenie stwierdzające, że literały ciągów i znaków muszą być odpowiednie - zamiana znaków w nich musi mieć możliwość zmiany wyniku. Pozwala to if 'x'>'w'technikom, ale blokuje „k \ bH” na przykład na „H”. Możesz dodać drugą odpowiedź po dodanym ograniczeniu.
Glen O

4

CJam, 94

{'H"EJO, WoRLD!"el96A+c/~_-3=0$@}"# 
`&^<>|;:?.()[]\1aBCdfFgGhiIjkKmMnNpPqQrsStTuUvVwxXyYzZ"254b87%*

Wypróbuj online! Zauważ, że tuż przed wysuwem linii powinien znajdować się tabulator. SE nie lubi tabulatorów, więc musisz wstawić go ręcznie.

  • 100 znaków
  • powtórzony alnum: -0 ()
  • powtarzana interpunkcja: -6 („” „)
  • powtarzane inne: -0 ()
  • powtarzane białe znaki: -0 ()

Łączny wynik: 94

Użyłem następującego kodu, aby sprawdzić, czy żadnego ze znaków w ciągu nie można usunąć:

"#  
`&^<>|;:?.()[]\1aBCdfFgGhiIjkKmMnNpPqQrsStTuUvVwxXyYzZ"
:A,,{_A\<A@)>+254b87%}%`

Wyświetla tablicę pokazującą liczbę razy Witaj, świecie! zostanie wydrukowany, jeśli znak odpowiadający indeksowi zostanie usunięty.


Kiedy uruchomię go w twoim linku, wyświetli się „Witaj, świecie!” sześć razy z rzędu. Ponadto, co robi ciąg znaków?
Glen O

Zgaduję, że nowy wiersz jest błędem - usunięcie go sprawia, że ​​działa.
Glen O

Problem z kopiowaniem i wklejaniem. Przed LF powinien znajdować się tabulator. Wygląda na to, że SE nie pozwala mi tego zrobić ... Ciąg jest uważany za liczbę podstawową-254 ( 254b). Moduł wyniku końcowego 7 powinien wynosić 1, więc poprzedni blok kodu jest wykonywany raz. Potrzebuję modułu, aby każda postać była niezbędna.
Dennis

Cóż, po dodaniu w zakładce brakującej (co oznacza „fix” kod), usuwając ZZ T, lub prawdopodobnie kilka innych znaków nie zmienia wynik.
Glen O

Okropnie źle zinterpretowałem część twojego pytania. Teraz jest naprawione.
Dennis

3

Ruby, 28 41

Po prostu zacznij od odpowiedzi z rozwiązaniem w duchu pytania:

print"He#{?l*2}o, "+'world!'if[$`&(9<=>6)^7|~8-5/3.1%0x4]

Punktacja (myślę, że mam rację):

  • 57 znaków
  • powtórzony alnum: -12 ( orli)
  • powtarzana interpunkcja: -4 ( "')
  • powtórzone inne: -0
  • powtarzane białe znaki: -0

Dla mnie wygląda dobrze, jeśli chodzi o punktację. Nie trzeba uwzględniać kar, które nie mają zastosowania, ale nie szkodzić w ich uwzględnieniu.
Glen O

.W 3.1można usunąć bez problemu. Jak Czy xw 0x4lub -w 8-5.

3

PHP, 1 (tak, jeden punkt!)

Użycie magicznych znaków do wygenerowania sumy kontrolnej, która w formie binarnej pasuje do „Piekła”, „o, w”, „orld” i „!”.

Zwykle lubię znajdować luki, ale tym razem postanowiłem grać zgodnie z duchem i intencją konkursu. Każda postać i jej pozycja ma zasadnicze znaczenie dla wyniku. Jedynymi miejscami, które można zastąpić, są nazwy zmiennych, które nie są wartościami dosłownymi, białe znaki między nimi phpi foreachktóre są PHPtraktowane jako równoważne oraz użycie 'vs, "które PHPtraktuje jako podobne.

<?php foreach(array('_MC:`~+V4@SbHR/l[J','dN#UB`5!Rv^NG@D}','9gm6L&-kuD','8OM97g.q]XQ0')as$j)print(hash("crc32",$j,1))?>

Do Twojej wiadomości, oto kilka innych magicznych ciągów i skrótów zainteresowania:

E.D}S:  Hell
9UDIRQ: Hell
N\7&*`%:    orld
UWX[E^O:    orld
mAHzDEb:    !   
uLJ7Ck&:    Hell
B+bG5mYJ:   Hell
:OvMzuOR:   !   
TgYR9g!6k:  o, w
NkFN`!8mI:  o, w
N#VA\j~}J[: Hell
vEl*]@0XQ5: o, w
9gm6L&-kuD: orld
*}{Xg@HN`\: !   
Pj@Y44uA6YJ:    Hell
|7OX0VF8gv}:    !   
DLRJAjgMj}\:    !   
!0bT*D}O4Lw:    orld
YGN97^v7ZY`:    Hell
++~bL/kP:|]W:   o, w
8OM97g.q]XQ0:   !   
l^m-DqZ^g[&+:   !   
Ewu]Rv~*DHQ7:   Hell
JIqjgF|S!\`8l:  Hell
b4l!MEG7vTu6/:  Hell
+B:zEq*J\k-Cm:  !   
_}E7wZD76^`Y9AU:    orld
q:Nq-~+_S7~N9Hz:    !   

Funkcje kod nadal jeśli usunąć \t, \nlub przestrzeń. Nie jest ekspertem od PHP, ale ;wydaje się również opcjonalny.
mniip

@mniip - Dokonano edycji. Nie wiedziałem, że średnik jest w niektórych przypadkach opcjonalny.

3

Befunge-98 , 97 punktów!

"v!dlrow ,h
B[CDEFGIJkLMNOPH
$<QRSTUV@|5cg1fe':-%\64*ab+7_/89}{0  j2
WXYZK`.=#>]
s()impq	n 3~
Atuxz&;y^ ?

Wypróbuj online!

Karta znajduje się między qa n.

Używa podobnej sztuczki do poprzedniej odpowiedzi Befunge, aby uzupełnić wiersze pozostałymi znakami, ale unika używania zduplikowanych znaków w sekcji wykonawczej. Usunięcie któregoś z niewykonywalnych znaków powoduje, że wykonywane części są nie na miejscu, zwykle kończą się nieskończonymi pętlami lub drukują niewłaściwe dane wyjściowe.

Jak to działa

Naprawdę jedyna wykonująca część wygląda następująco:

"v!dlrow ,h
         k     H
$<      @|5cg1fe':-%\64*ab+7
         >]
        ^ ?

Najpierw używa literału owijającego, aby dodać , world!do stosu. Pozwala to uniknąć dwóch "sekund.

$<      @|5cg1fe':-%\64*ab+7

Zwiększa Helloto stos przy użyciu różnych metod, aby uniknąć powielania znaków. $wyskakuje nadmiar miejsca spowodowany literałem owijającego łańcucha.

7+dodaje 7 do hkońca literału ciągu, aby utworzyć o . ba*46\%:oblicza 111, wartość ascii li powiela ją.

'e dodaje e do stosu.

f1g otrzymuje postać o wartości 1,15, która jest H

Następnie ponownie wykorzystuje ,ciąg w celu wydrukowania całości Hello, world!. Reszta to tylko zmiany kierunku, aby przejść do zakończenia @.


1

Ruby, 78

Więcej nadużyć, jak sądzę, nie jestem pewien, jaka dokładnie będzie łatka. Pobiera długi ciąg znaków i sprawdza sumę wyniku, więc każde usunięcie lub zmiana spowoduje awarię programu. Prawdopodobnie można go trochę zoptymalizować, aby usunąć powielanie niektórych liter i uzyskać tam białe znaki.

puts('Hello, world!')if%["\#$&*+-/:;<>?@ABCDEFGIJKLMNOPQRSTUVWXYZ^_`abcghjknqvxyz{|}~123].sum==4980

3
Problem polega na tym, że wszystko po i łącznie z tym ifmożna usunąć.
patrz

@TheRare - nic złego z tym, o ile iffaktycznie działa, a rzeczy po nim nadal są zgodne z regułami.
Glen O

@GlenO Ale czy nie jest to liczone jako „usuwalny kod”? Po prostu puts('Hello, world!')by zadziałało. Myślę, że zasady wymagają wyjaśnienia, czy jest to zgodne z prawem.
patrz

@TheRare - z perspektywy czasu prawdopodobnie powinienem był użyć obszernego „podzbioru kodu nie powinien być w stanie wygenerować tego samego wyniku”, ale nie sądzę, że powinienem nadal zmieniać reguły. W obecnej formie, o ile kod jest funkcjonalny i niearbitralny oraz jest zgodny z innymi zasadami, jest zgodny z prawem. Przynajmniej ta metoda rozwiązania jest nieosiągalna w większości języków (dokonana przeze mnie edycja zamknęła lukę, która działa w większości języków).
Glen O

@GlenO Jesteś sędzią. Poproś mnie o usunięcie tych komentarzy, jeśli uważasz, że są niepotrzebne.
patrz

1

PHP, 2257

Luka: ukośnik został pominięty w specyfikacjach i kalkulatorze wyników!

Ten kod zlicza liczbę wystąpień odwrotnych ukośników w każdym ciągu i wypisuje odpowiednik ASCII. Zastąpienie odwrotnego ukośnika innym znakiem lub usunięcie odwrotnego ukośnika powoduje błąd analizy lub zmienia wynik.

Ciekawą cechą odwrotnych ukośników PHPjest to, że trzeba ich unikać, aby automatycznie podwoić wynik! Możesz podwoić, potroić itp. Wynik, mnożąc liczbę ukośników odwrotnych, ale nie chciałem być chciwy i myślę, że może przekroczyć granice tego, co możesz wprowadzić.

<?php foreach(array('\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')as$x)print(chr(substr_count($x,"\\")))?>

To wyraźnie nic więcej niż literówka w opisie, a nie luka. Co więcej, już to wiedziałeś. Opis wyraźnie mówi „inne znaki ASCII”. Do czasu, gdy to przeczytasz, zostanie on poddany edycji w celu włączenia.
Glen O

Zwłaszcza ukośnik był źródłem pytania, ale nie zdawałem sobie sprawy, że potraktował je jako sekwencję ucieczki.
Glen O

To nie jest zmiana zasad, to poprawienie drobnej literówki. Ukośnik odwrotny był w zasadach, po prostu się nie wyświetlał (aby to zobaczyć na własne oczy, kliknij przycisk „edytowany”, a następnie kliknij „side-by-side markdown”). Inni nie wykorzystują luk, wykorzystują funkcje swoich języków.
Glen O

1

Befunge - 87

"dlrow ,olleH"bk,                                                                   v
!#$%&'()*+-./0123456789:;  <=>?ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`acfghijmnpqstuvxyz{|}~@

Pierwsza linia jest warta cztery punkty ze względu na całe powtórzenie, ale w drugiej linii nie ma zduplikowanych znaków. Jedynym dosłownym ciągiem znaków w tym kodzie jest dlrow ,olleHodwrócenie i wydrukowanie jako wynik. Usunięcie dowolnego znaku spowoduje rozłączenie vkońca pierwszego wiersza od @końca drugiego, powodując, że program nigdy się nie zakończy. Jeśli…v sam zostanie usunięty, kod przejdzie do nieskończonej pętli drukującej prawidłowe dane wyjściowe.



0

Acc !!, -138 (i tak, to jest negatywne 138)

Chociaż może to nie być najlepszy wynik, jaki kiedykolwiek uzyskałem w PPCG, wątpię, czy może być wyższy niż ten w Acc !!

108
Write 72
Write 101
Count i while i-2 {
	Write _
}
Write _+3
Write 44
Write 32
Write 119
Write 111
Write 114
Write _
Write 100
Write 33

Wypróbuj online!

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.