Więcej znaczy mniej, a mniej znaczy więcej

72

Każdy może zwiększyć wydajność programu, dodając znaki, więc zróbmy dokładnie odwrotnie.

Napisz pełny program, funkcję wewnętrzną lub fragment kodu dla środowiska REPL w wybranym języku, który spełnia następujące kryteria:

  1. Twój kod musi mieć co najmniej 1 znak.

  2. Uruchomienie oryginalnego kodu powoduje wygenerowanie x znaków wyjściowych do STDOUT (lub najbliższej alternatywy), gdzie 0 ≤ x <+ ∞ .

  3. Usunięcie dowolnego dowolnego pojedynczego znaku z oryginalnego kodu powoduje ponownie powstanie poprawnego kodu, który generuje co najmniej x + 1 znaków wyjściowych do STDOUT.

  4. Ani oryginalny kod, ani modyfikacje nie mogą generować żadnych błędów, na przykład do STDOUT, STDERR, syslog lub gdzie indziej. Jedynymi wyjątkami od tej reguły są ostrzeżenia kompilatora.

    Twój program może nie wymagać żadnych flag ani ustawień, aby ukryć wyjście błędu.

    Twój program może nie zawierać żadnych krytycznych błędów, nawet jeśli nie generują żadnych wyników.

  5. Zarówno oryginalny kod, jak i modyfikacje muszą być deterministyczne i ostatecznie zakończyć (bez nieskończonych pętli).

  6. Ani oryginalny kod, ani modyfikacje nie mogą wymagać wprowadzania jakichkolwiek danych.

  7. Funkcje lub fragmenty mogą nie utrzymywać żadnego stanu między wykonaniami.

Biorąc pod uwagę, że to zadanie jest trywialne w niektórych językach i wręcz niemożliwe w innych, jest to .

Podczas głosowania należy wziąć pod uwagę „względną skrótowość” kodu, tj. Krótszą odpowiedź należy uznać za bardziej kreatywną niż dłuższą odpowiedź w tym samym języku .

Dennis
źródło
2
Chociaż rozwiązanie 1-bajtowe jest imponujące, bardziej imponujące byłoby zobaczenie, kto może wymyślić najwyższy stosunek x: x + nie długości normalnego wyjścia w porównaniu ze średnią długością wyjścia po usunięciu dowolnego znaku. Moim zdaniem stanowi dodatkowe wyzwanie dla tego pytania.
Trent
@FizzBuzz Easy: 111111111111111111^111111111111111111(jeśli miałeś na myśli najniższy stosunek).
jimmy23013
2
Aw, właśnie zauważyłem „brak nieskończonych pętli”. Pracowałem nad stworzeniem programu> <>, który utworzyłby dane wyjściowe szybciej, gdyby usunięto jeden znak, tak że po stałej kinstrukcji, wynik każdego programu jest ściśle większy niż wynik oryginału od tego czasu (ponieważ drugi programy zapętlałyby się szybciej lub generowały więcej pętli). Wyglądało całkiem interesująco. Może i tak zobaczę, czy uda mi się to ukończyć i podjąć kolejne wyzwanie.
mbomb007
Ciekawym wskaźnikiem punktacji dla tego wyzwania mogą być „najbardziej unikalne postacie, więzi sięgają najkrótszej długości”. Próbowalibyśmy wtedy uzyskać wszystkie znaki dosłownie w postaci ciągu.
lirtosiast
Co oznacza funkcja wewnętrzna?
dfeuer

Odpowiedzi:

94

Dowolny REPL z operacją doczołową XOR, 5 bajtów

11^11

11^11jest oczywiście 0. Jedynymi innymi możliwościami są 1^11lub 11^1które są 10 lub 1111które same się wytwarzają.

feersum
źródło
7
Dobrze zagrane, feersum. Dobrze rozegrane.
Alex A.
13
Minus również załatwi sprawę.
Martin Ender,
11
Podobnie99|99
Sp3000,
@ Challenger5 -10jest dłuższy niż 0.
Martin Ender,
@MartinEnder Och, rozumiem. Z jakiegoś powodu myślałem, że musi to być większa liczba.
Esolanging Fruit
55

TI-BASIC, 3 1

"

Gdy ostatnim wierszem programu jest wyrażenie, kalkulator wyświetli to wyrażenie. W przeciwnym razie kalkulator wyświetla się Donepo zakończeniu programu. Wyrażenie tutaj jest pustym ciągiem, ale może również działać z dowolną liczbą jednocyfrową.

2 bajty:

isClockOn

To samo co powyżej, ale z 2-bajtowym tokenem.

3 bajty:

ππ⁻¹

Drukuje z 1powodu domniemanego mnożenia. Może być przedłużony w nieskończoność poprzez dodanie par ⁻¹. Poniższe również działają.

√(25
e^(πi
⁻ii
ii³
2ππ   
cos(2π

Dłuższe rozwiązania:

11/77►Frac
ᴇ⁻⁻44
cos(208341   //numerator of a convergent to pi; prints "-1"

Prawdopodobnie są też rozwiązania wieloliniowe, ale nie mogę ich znaleźć.

lirtosiast
źródło
Nie znam TI BASIC. Czy liczysz sqrt i nawias jako pojedynczy znak?
Level River St
6
Tak, sqrt i nawiasy są razem jednym tokenem, przechowywanym jako jeden bajt w pamięci kalkulatora i wprowadzanym jednym naciśnięciem klawisza.
lirtosiast
8
w końcu sposób, aby zatrzymać tę irytującą wiadomość Gotowe!
Faraz Masroor
1
Nie ma Donetokena; kalkulator wyświetla się Donepo zakończeniu wykonywania dowolnego programu bez wyrażenia w ostatnim wierszu (w tym pustego programu).
lirtosiast
48

CJam, JavaScript, Python itp. 18 bajtów

8.8888888888888888

Wyjściami w CJam są:

8.8888888888888888 -> 8.88888888888889
8.888888888888888  -> 8.888888888888888
88888888888888888  -> 88888888888888888
.8888888888888888  -> 0.8888888888888888

JavaScript i Python działają w podobny sposób. Nie jest konkurencyjny w JavaScript i Python, ale nie jest łatwo znaleźć krótszy w CJam .

jimmy23013
źródło
16
Fajne nadużycie zmiennoprzecinkowe!
nderscore
31

Oktawa, 5 bajtów

10:10

(x: y) daje tablicę liczb między xiy w przyrostach co 1, więc między 10 a 10 jedynym elementem jest 10:

> 10:10
ans = 10

Gdy drugi argument jest mniejszy niż pierwszy, oktawa wypisuje pustą macierz i jej wymiary:

> 10:1
ans = [](1x0)

> 10:0
ans = [](1x0)

Po usunięciu znaku z pierwszej liczby w tablicy jest więcej elementów:

> 1:10
ans = 1 2 3 4 5 6 7 8 9 10

> 0:10
ans = 0 1 2 3 4 5 6 7 8 9 10

Po usunięciu okrężnicy liczba zwraca się:

> 1010
ans = 1010
Craig Roy
źródło
1
obowiązuje również w R
mnel
30

Microscript, 1 bajt

h

Nie powoduje to żadnych wydruków, ponieważ hpomija ukryte drukowanie języka. Usunięcie jedynego znaku powoduje utworzenie programu, którego wynikiem jest 0\n.

Później postaram się znaleźć lepszą odpowiedź.

EDYCJA 17 LISTOPADA:

Działa to również w Microscript II, z tym wyjątkiem, że zamiast ustępować 0\n, daje pusty program null.

SuperJedi224
źródło
22

Pyth, 3 bajty

cGG

Gjest wstępnie zainicjowany małymi literami w alfabecie. cjest funkcją podziału.

cGGdzieli alfabet według wystąpień alfabetu, które kończą się na ['', ''](8 bajtów).

Gdy brakuje drugiego parametru, cdzieli ciąg według białych znaków, tabulatorów lub nowych linii. Ponieważ żaden z nich się nie pojawia G, dane wyjściowe dla cGto ['abcdefghijklmnopqrstuvwxyz'](30 bajtów).

I GGpo prostu drukuje dwa razy alfabet na dwóch osobnych wierszach: abcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyz(53 bajty).

Wypróbuj online: demonstracja

Jakube
źródło
16

Python REPL, 6 bajtów

Nie najkrótszy, ale oto kolejna odpowiedź na nadużycie zmiennoprzecinkowe:

>>> 1e308
1e+308
>>> 11308
11308
>>> 11e08
1100000000.0
>>> 11e38
1.1e+39
>>> 11e30
1.1e+31

Ale...

>>> 11e308
inf
Sp3000
źródło
14

JavaScript (i wiele więcej), 5 bajtów

44/44 lub

44/44 -> 1
44/4  -> 11
4444  -> 4444
4/44  -> 0.09090909090909091
C5H8NNaO4
źródło
12

CJam, 5

''''=

Wypróbuj online

''''=   compares two apostrophes and prints 1
'''=    prints '=
''''    prints ''
aditsu
źródło
11

Lenguage , 5 bajtów

00000

Długość programu wynosi 5, co odpowiada programowi *** mózg ,odczytującego koniec znaku wejściowego i kończącym się bez wyjścia.

Usunięcie dowolnego znaku powoduje, że kod 0000o długości 4 odpowiada programowi brainf *** .drukującemu jeden znak ( punkt kodowy 0) i kończąc.

Jednoargumentowy równoważne byłoby 0000000000000(13 zer) bo trzeba poprzedzić wiodącym 1do binarnego długości kodu więc 101staje 1101.

randomra
źródło
9

PHP, 6 bajtów

Obserwuję tę grupę od kilku tygodni i jestem zdumiony twoimi technikami programowania. Teraz musiałem się zalogować, jest coś, co mogę zrobić, przepraszam :-) Jednak może to być mój ostatni post tutaj ...

<?php 

(zwróć uwagę na spację po drugiej p)

To wyświetla pusty ciąg. Usunięcie dowolnego znaku powoduje wyświetlenie tekstu bez znaku. Pamiętaj, że może powodować błędy HTML (np. Treści nie renderowane przez przeglądarki <?ph).

Próbowałem też z echotagiem. to znaczy. na przykład.:

<?= __LINE__;;

Ten wychodzi 1. Jeśli =pominięto, <? __LINE__;;oznacza wynik. Jednak usunięcie dowolnej stałej magicznej spowoduje E_NOTICE : Uwaga: Użycie niezdefiniowanej stałej LNE - przyjęto „ LNE ” w ...

Jeśli powiadomienia nie są uważane za błędy (punkt 4 zasad), dotyczy to również :-)

Voitcus
źródło
Och, to sprytne. Wydaje mi się, że linefeed również by działał. Jeśli zadaniem byłoby stworzenie HTML , byłoby to nieprawidłowe. Jednak PHP można uruchomić z wiersza poleceń, podobnie jak w każdym innym języku programowania, w którym dane wyjściowe są po prostu drukowane na ekranie.
Dennis
@Dennis PHP generuje wszystko . Zawsze możesz użyć CTRL-U w przeglądarce, aby zobaczyć wynik. HTML może być nieprawidłowy, ale w rzeczywistości program nie jest (nie ma <HTML>tagu itp.)
Voitcus
1
Chodzi mi o to, że w ogóle nie trzeba angażować przeglądarki. Po prostu wykonaj php test.php. Nawiasem mówiąc, drugi kod jest nieprawidłowy. Pytanie nie zabrania błędy, ale wyjście błędów , błędów znaczenie, ostrzegawczych, ogłoszeń, itd.
Dennis
2
#!w pliku skryptu działa również.
jimmy23013
9

Python, 10 8 bajtów

256**.25

Działa w Pythonie i znajomych. Dzięki Jakube za pokazanie, jak zmniejszyć o 2 bajty.

Z IDLE:

>>> 256**.25
4.0
>>> 26**.25
2.2581008643532257
>>> 56**.25
2.7355647997347607
>>> 25**.25
2.23606797749979
>>> 256*.25
64.0
>>> 256*.25
64.0
>>> 256**25
1606938044258990275541962092341162602522202993782792835301376L
>>> 256**.5
16.0
>>> 256**.2
3.0314331330207964

pierwotnie miałem to (10 bajtów):

14641**.25

Z IDLE:

>>> 14641**.25
11.0
>>> 4641**.25
8.253780062553423
>>> 1641**.25
6.364688382085818
>>> 1441**.25
6.161209766937384
>>> 1461**.25
6.18247763499657
>>> 1464**.25
6.185648950548194
>>> 14641*.25
3660.25
>>> 14641*.25
3660.25
>>> 14641**25
137806123398222701841183371720896367762643312000384664331464775521549852095523076769401159497458526446001L
>>> 14641**.5
121.0
>>> 14641**.2
6.809483127522302

i na tej samej notatce:

121**.25*121**.25

działa identycznie dzięki ładnemu zaokrągleniu przez Python, w 17 bajtach.

>>> 121**.25*121**.25
11.0
>>> 21**.25*121**.25
7.099882579628641
>>> 11**.25*121**.25
6.0401053545372365
>>> 12**.25*121**.25
6.172934291446435
>>> 121*.25*121**.25
100.32789990825084
>>> 121*.25*121**.25
100.32789990825084
>>> 121**25*121**.25
3.8934141282176105e+52
>>> 121**.5*121**.25
36.4828726939094
>>> 121**.2*121**.25
8.654727864164496
>>> 121**.25121**.25
29.821567222277217
>>> 121**.25*21**.25
7.099882579628641
>>> 121**.25*11**.25
6.0401053545372365
>>> 121**.25*12**.25
6.172934291446435
>>> 121**.25*121*.25
100.32789990825084
>>> 121**.25*121*.25
100.32789990825084
>>> 121**.25*121**25
3.8934141282176105e+52
>>> 121**.25*121**.5
36.4828726939094
>>> 121**.25*121**.2
8.654727864164496
rp.beltran
źródło
@Akiino Nie rozumiem dokonanej przez Ciebie edycji. Usunięta linia była jedną z wymaganych możliwości i nie różniła się od żadnej z poniższych. Czy możesz wyjaśnić, dlaczego go usunąłeś? Wycofałem go, ale mogę przyznać się do cofnięcia akcji z odpowiednim uzasadnieniem.
rp.beltran
Mój wewnętrzny perfekcjonista po prostu nie mógł spać dobrze, wiedząc, że linia (ta, którą usunąłem) jest powielona bez powodu. Są wiersze 56..., 26...a potem 56...znowu, ale jest tylko jeden sposób na uzyskanie 56, więc należy to uwzględnić tylko raz, prawda?
Akiiino,
Och, nie widziałem, że było tam dwa razy. Mój zły, dobry chwyt.
rp.beltran
Wycofałem swoje wycofanie.
rp.beltran
7

Tłumacz SWI-Prolog

__A=__A.

Uwaga: nie można usunąć finału. . Tłumacze Prologa zawsze będą szukać ostatecznego terminu na uruchomienie zapytania, więc jeśli będziemy ściśle przestrzegać zasad tego konkursu i pozwolimy sobie na usunięcie okresu, w którym nie będzie on biegał, przeskoczy o linię i zaczeka na dodatkowe polecenia, aż do jednego kończy się kropką.

Pierwotne zapytania __A=__A.wyjścia true..

Dane _A=__A.wyjściowe zapytania _A = '$VAR'('__A'). Podobne modyfikacje (tj. Usunięcie jednego _lub jednego z dwóch A) spowodują podobne wyniki.

Wreszcie __A__A.wyniki zapytania w SWI-Prolog:

% ... 1,000,000 ............ 10,000,000 years later
% 
%       >> 42 << (last release gives the question)
Fatalizować
źródło
12
@Jakube Nie rozumiem, jak obowiązkowy okres końcowy różni się znacznie od wpisywania klawisza Enter, aby uruchomić fragment kodu w innym języku. Jeśli usuniesz kanał, to również nie będzie działać.
Fatalize
W niektórych językach jest bardziej odpowiednikiem średnika, co jest liczone jako znak.
tomsmeding
5

Sed, 1 bajt

d

Jak sedwymaga strumienia wejściowego, zaproponuję konwencję, że sam program powinien być dostarczany jako dane wejściowe.

$ sed -e 'd' <<<'d' | wc -c
0
$ sed -e '' <<<'d' | wc -c
2

Program jest alternatywą x, lecz jedynie zmienia się od 1do 2bajtów wyjściu gdy usunięte.

Toby Speight
źródło
2
Właściwie zapomniałem dodać regułę braku danych wejściowych do pytania, więc nie naruszyłeś żadnych reguł w momencie przesyłania. Stworzyłem dyskusję Czy języki takie jak sed są zwolnione z zasad „bez wprowadzania danych”? na Meta.
Dennis
5

K, 3 bajty

2!2

Dane wyjściowe 0w REPL. Usunięcie pierwszych 2 wyników 0 1, usunięcie wykrzyknika powoduje 22, a usunięcie ostatnich 2 powoduje, że łańcuch znaków różni się między implementacjami K, ale zawsze ma co najmniej 2 znaki (w ok, to (2!); zgodnie z danymi @Dennis, Kona 2!).

kirbyfan64sos
źródło
@ Sp3000 Usuwanie *tylko wydruków 2. Usuwanie 2 wydruków (*!)(funkcja niekompletna) w ok; Nie wiem o innych tłumaczach (np. Kona, k2 itp.), Chociaż uważam, że Kona wydrukowałby *[!;]lub coś podobnego. Usunąłem gwiazdę, ponieważ wydawało się to najbezpieczniejsze.
kirbyfan64sos
Nie możesz wybrać, to musi działać usuwając dowolną postać
edc65
@ edc65 Naprawiono kosztem ani jednego bajtu.
kirbyfan64sos
1
@Dennis Zaktualizowano.
kirbyfan64sos
5

MATLAB, 9 7 bajtów

Jest o 2 bajty dłuższy niż inna odpowiedź MATLAB / Octave, ale mimo to podoba mi się, ponieważ jest nieco bardziej złożony.

'Operator Matlaba jest złożoną sprzężoną transpozycją. Używając tego na wyimaginowanej liczbie skalarnej, otrzymujesz i' = -i. Ponieważ liczby urojone można zapisać tak, jak 2imożna to zrobić:

2i--2i'
ans =
     0    

Usunięcie jednej z postaci spowoduje jedną z poniższych czynności:

ans =
   0.0000 - 1.0000i
   2.0000 - 2.0000i
   0.0000 + 4.0000i
   0.0000 + 4.0000i
   0.0000 + 1.0000i
   2.0000 + 2.0000i
   0.0000 + 4.0000i
Stewie Griffin
źródło
4

GolfScript, 2 bajty

Ta odpowiedź nie jest konkurencyjna, ale ponieważ jest to fragment kodu, który zainspirował to wyzwanie, i tak chciałem się nią podzielić.

:n

Domyślnie wszystkie programy GolfScript drukują cały stos, a następnie wysuwają wiersz, wykonując putsna całym stosie. Sama funkcja putsjest zaimplementowana tak, jak {print n print}w interpretatorze, gdzie printjest ona rzeczywiście wbudowana i njest zmienną, która "\n"domyślnie przechowuje ciąg .

Teraz program GolfScript zawsze wypycha dane wejściowe ze STDIN na stos. W tym przypadku, ponieważ nie ma żadnych danych wejściowych, wypychany jest pusty ciąg. Przypisanie zmiennej :nzapisuje ten pusty ciąg znaków n, tłumiąc niejawne podawanie linii i powodując, że dane wyjściowe są całkowicie puste.

Po wyeliminowaniu npozostaje ci niepełne przypisanie zmiennych :(można by pomyśleć, że to błąd składniowy, ale nie), więc domyślny wysuw wiersza jest drukowany jak zwykle.

Po wyeliminowaniu :pozostajesz z n, który przesuwa linię na stosie, więc program drukuje dwa linie.

Dennis
źródło
4

APL, J i ewentualnie inne warianty, 3 bajty

--1

Wyprowadza 1w APL. -1wypisuje ¯1i --wypisuje następujące w TryAPL :

┌┴┐
- -
jimmy23013
źródło
3

J, 5 bajtów

|5j12

Wielkość liczby zespolonej 5 + 12iw REPL.

   |5j12 NB. original, magnitude of the complex number `5 + 12i`
13
   5j12  NB. the complex number `5 + 12i`
5j12
   |j12  NB. magnitude of the undefined function j12
| j12
   |512  NB. magnitude of 512
512
   |5j2  NB. magnitude of 5 + 2i
5.38516
   |5j1  NB. magnitude of 5 + 1i
5.09902

.

J, 9 bajtów

%0.333333

Na podstawie precyzji zmiennoprzecinkowej, odwrotności i odwrotności macierzy.

   %0.333333 NB. original, reciprocal of 0.333333
3
   0.333333  NB. 0.333333
0.333333
   %.333333  NB. matrix inverse of 333333
3e_6
   %0333333  NB. reciprocal of 333333
3e_6
   %0.33333  NB. reciprocal of 0.33333
3.00003

Wypróbuj online tutaj.

randomra
źródło
3

Mathematica, 3 bajty

4!0

4!0  ->  0    the factorial of 4, times 0
4!   ->  24   the factorial of 4
40   ->  40
!0   ->  !0   the logical not of 0, but 0 is not a boolean value
alephalpha
źródło
3

Dyalog APL , 2 bajty

⍴0 zwraca pusty ciąg (długość 0)

zwroty (długość 1)

0zwroty 0(długość 1)

Adám
źródło
2

Szybki (i wiele więcej), 8 bajtów

93^99<84

wyjście (4 znaki):

true

Po usunięciu n-tego znaku wyjściowego jest:

n -> out
----------
0 -> false
1 -> false
2 -> false
3 -> false
4 -> false
5 -> 10077
6 -> false
7 -> false

Istnieje 78 możliwych rozwiązań tego typu w formacie a^b<c.

Myślę, że celem tego wyzwania powinno być jak najwięcej bajtów, ponieważ im więcej bajtów, tym więcej możliwych bajtów do usunięcia, a zatem trudniejsze.

Kametrixom
źródło
Myślałem o tym, ale byłoby łatwiej dla języków opartych na stosie. Gdyby to było wyzwanie do gry w kręgle, aditsu miałoby nieskończony wynik. Jego kod można powtarzać w kółko; każda kopia zrobi dokładnie to samo.
Dennis
@Dennis Och, rozumiem, tak, ma to sens, ale myślę, że bajty nie są może zbyt dobrą miarą do tego zadania
Kametrixom
Zgadzam się. Dlatego jest to konkurs popularności. Najbardziej pozytywna odpowiedź wygrywa.
Dennis
2

MathGolf , 2 bajty

♂(

Wypróbuj online!

Wyjaśnienie

♂   Push 10
 (  Decrement TOS by 1

Dlaczego to działa?

Zwykłe wyjście to 9. Jeśli (zostanie usunięty, wynikiem jest 10. Jeśli zostanie usunięty, program domyślnie wyskakuje ze stosu 0, aby podać (operatorowi, który wyprowadza -1.

maxb
źródło
1

Clojure, 11 bajtów

(defn x[]1)

Na początku pomyślałem, żeby po prostu zamieścić w REPL odpowiedź na jeden znak, tak jak inne języki, np

user=> 1
1

Problem polega na tym, że jeśli usuniesz tę postać, REPL nic nie robi po naciśnięciu klawisza Enter. Zamiast tego musiała zostać owinięta funkcją dozwoloną przez reguły pytania. Po wywołaniu tej funkcji zwraca 1. Jeśli usuniesz jedyny znak w funkcji,

(defn x[])

funkcja zwraca, nilktóra wypisuje dodatkowe dwa bajty.

user=> (defn x[]1)
#'user/x
user=> (x)
1
user=> (defn y[])
#'user/y
user=> (y)
nil
Zach Thacker
źródło
1
Wyjaśnienie: Konkurs wymaga wewnętrznej funkcji , która 1w tym przypadku byłaby (1 bajt).
Dennis
1

05AB1E (starsza wersja), 1 bajt

Każdy bajt w 05AB1E (starsza wersja) działałby, z wyjątkiem [(nieskończonej pętli).

Zobacz tutaj wszystkie możliwe wyjścia dla wszystkich możliwych jednobajtowych programów 05AB1E.

Usunięcie tego pojedynczego bajtu, aby pozostał pusty program, domyślnie wyświetli zawartość pliku info.txt do STDOUT.

Wypróbuj online.


05AB1E , 1 bajt

?

Wypróbuj online.

Niestety pusty program w nowej wersji 05AB1E domyślnie wyświetla tylko 1-bajtową nową linię ( Wypróbuj online ), więc prawie żaden z 1-bajtowych znaków nie jest możliwy, ponieważ nie będzie musiał nic wypisywać. Jedyny możliwy program, który nic nie wypisuje (a więc także niejawna nowa linia), ?o ile wiem.

Kevin Cruijssen
źródło
0

Japt , 2 bajty

Wypróbuj online!

Ajest wstępnie inicjowane 10, Éodejmuje 1, a wynik jest jeden bajt: 9.

Usunięcie É powoduje, że program Ageneruje wartość A 10, więc wynik to 2 bajty.

Podobnie, usunięcie A skutkuje właśnie tym, Éco jest interpretowane jako -1, a wyjście jako -1, więc wynik to 2 bajty.

Kamil Drakari
źródło
0

Runiczne Zaklęcia , 6 (modyfikowalnych) bajtów

11-{{B\
/B~~@/
\00<
R"Error"@

Wypróbuj online!

Runic nie ma środowiska REPL i napisanie pełnego programu w celu spełnienia ograniczeń nie jest łatwo wykonalne (co prowadzi do nieprawidłowych programów lub braku danych wyjściowych). Część kodu 11-{{Bdziała więc jako funkcja wewnętrzna i tylko tę część można modyfikować. BInstrukcja jest wystarczająco blisko do wskaźnika funkcji i instrukcji return, że klasyfikacja ta powinna być dopuszczalna (jak to skacze IP do położenia, w kodzie, a także popychanie lokalizację powrotną do stosu, które mogą być dostępne przez późniejsze Blub wyrzucić) .

  • Standardowa moc wyjściowa: 0
  • Usuwanie któregoś z nich 1:05
  • Usuwanie -:11
  • Usuwanie {:Error051
  • Usuwanie B:120

Ostateczna \na końcu pierwszego wiersza stanowi zewnętrzną granicę wokół funkcji wewnętrznej w przypadku, gdy instrukcja return jest usuwany, tak że IP nie wykracza meandrujące całym wszędzie chcąc nie chcąc (a drukowanie nie ma wyjścia).

Zauważ, że Error051to tylko dowolny ciąg, mógłbym wstawić wszystko, co chciałem, w tę część kodu, a „Błąd” był zabawnym rezultatem posiadania kodu, który wyszukuje współrzędne powrotu i teleportuje IP w dowolne miejsce.

Draco18s
źródło