Celem tego wyzwania jest napisanie programu spełniającego następujące warunki:
Program nie jest palindromiczny lub zasadniczo palindromiczny (co oznacza, że możliwe jest usunięcie znaków, aby uczynić go palindromem bez zmiany efektów programu).
Program nie jest inwolucją (co oznacza, że nie generuje oryginalnych danych wejściowych po uruchomieniu na danych wyjściowych)
Program odwróconej polaryzacji jest odwrotnością programu normalnego; więc kiedy odwrócony program jest uruchamiany na wyjściu normalnego programu, zwraca oryginalne wejście.
Co oznacza odwrócona polaryzacja ? Cóż, różni się między językami.
- W przypadku większości nie-esolangów oznacza to również odwrócenie kolejności podoperacji w pojedynczej operacji, odwrócenie kolejności argumentów i odwrócenie zawartości zakodowanych list / tablic / krotek / słowników / stosów / kolejek / itp. jako odwrócenie kolejności bloków kodu i linii autonomicznych (ale nie linii w blokach)
Przykłady:
Haskell :
x`mod`y-> y`mod`x; zipWith ((*3).(+)) [1,2,3] [4,5,6]->zipWith ((+).(*3)) [6,5,4] [3,2,1]
Python : 2**3-> 3**2; for x,y in [(1,2),(3,4),(5,6)]->for y,x in [(6,5),(4,3),(2,1)]
W przypadku języków, które mają funkcje 1-znakowe (jak Pyth, APL), po prostu odwróć ciąg instrukcji
W przypadku jednowymiarowych esolangów, takich jak BF, odwróć instrukcje lub zamień polaryzację; zamiany polaryzacji to
[]->{},+->-,-->+,>-><,<->>,.->,i,->.(ale nie oba)W przypadku dwuwymiarowych esolangów, takich jak Befunge, możesz albo wykonać odbicie wzdłuż osi x lub y, albo przekątną, obrócić o 180 stopni lub wykonać kombinację odbicia i obrotu
Operacje przemienne są dozwolone, ale operacje palindromiczne nie są: 2*xjest w porządku, ale x+xjest złe. Definicja odwrócenia polaryzacji jest dość luźna, ale użyj własnego osądu, co ma sens; celem nie jest znalezienie najbardziej sprytnej luki, ale znalezienie najbardziej sprytnego rozwiązania.
To konkurs popularności, więc bardzo sprytna luka może być popularna, ale staraj się trzymać w duchu tego wyzwania. Zwycięzca zostanie ogłoszony, gdy pojawi się co najmniej 10 rozwiązań z co najmniej 1 głosowaniem pozytywnym, i jest co najmniej jedno rozwiązanie z większą liczbą głosów pozytywnych niż zgłoszeń z co najmniej 1 głosowaniem pozytywnym; lub za 1 miesiąc, w zależności od tego, co nastąpi wcześniej. To jest moje pierwsze wyzwanie, więc postaraj się być uczciwy i konstruktywnie wyrazić opinię, ale daj mi również znać, czy jest to nieuzasadnione wyzwanie, czy w jakikolwiek sposób jest źle sklasyfikowane lub niejednoznaczne. Jeśli masz pytania dotyczące języka, który nie pasuje do żadnej z szufladek, które tu przedstawiłem, skomentuj, a ja zgodzę się na wolę społeczności, jeśli wystąpi silna potrzeba szczególnego wyjaśnienia lub zmiany zasad.
AKTUALIZACJA
Minął dokładnie 1 miesiąc od rozpoczęcia tego konkursu (akurat zdarzyło mi się to sprawdzić przez przypadek, nie wiedząc, że byłem na czas). Ponieważ jest to konkurs popularności, zwycięzcą (osuwiskiem) jest Pietu1998-Befunge . Mimo że dolne komponenty (odwracacz tekstu i alfabet wstecz) są jednościami, koder / dekoder nie są, więc nie ma problemu. Punkty bonusowe (w mojej opinii) za zarządzanie napisem „BEFUNGE” pośrodku. Osobiście podobała mi się nowość rozwiązania Theseus Zgarba , ponieważ język wygląda fajnie (jeśli jest ograniczony). Dziękujemy wszystkim za udział, a mimo że zwycięzca został wybrany, pozostawiam ten konkurs całkowicie otwarty i chętnie przyjmę przyszłe zgłoszenia.
()palindromic? Technicznie jest odwrotnie )(.