W języku programowania C istnieją formacje zwane digrafami i trigrafami, które są sekwencjami dwu- i trzyznakowymi , które oceniają na mniej popularne znaki. Na przykład możesz użyć, ??-
jeśli klawiatura nie ma ~
.
Biorąc pod uwagę tekst, zamień wszystkie wystąpienia następujących digrafów i trigrafów (po lewej stronie) na prawidłowy, krótszy znak golfa (po prawej stronie).
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
Wejście
Dane wejściowe to tekst ASCII. Dozwolony końcowy znak nowej linii. Nie musi być prawidłowym kodem C.
Wynik
Wyjście jest tym samym tekstem, a wszystkie wystąpienia powyższych digrafów i trigrafów zastąpione skróconą wersją, oceniane od lewej do prawej. Dozwolony końcowy znak nowej linii. Nie musi być prawidłowym kodem C.
Przypadki testowe
=>
oddziela wejście i wyjście.
if (true ??!??! false) { => if (true || false) {
??-arr.indexOf(n) => ~arr.indexOf(n)
function f(??) { console.log('test??'); } => function f(] { console.log('test^); }
/* comment :> :) *??/ => /* comment ] :) *\
%:What am I doing??!!??` => `#What am I doing|!??
??(??)??(??) <:-- not a palindrome => [][] [-- not a palindrome
?????????? => ??????????
int f(int??(??) a) ??< return a??(0??)??'a??(1??) + "??/n"; ??> => int f(int[] a) { return a[0]^a[1] + "\n"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"
to kolejny istotny przypadek testowy: w C, oznacza to,"#%:"
gdzie%:
nie jest wyjątkowy, ale myślę, że planują wyjście"##"
.Odpowiedzi:
Siatkówka , 65 bajtów
Wypróbuj online!
T
jest trochę niewygodny w użyciu, ale wciąż oszczędza mi 14 bajtów.źródło
\?\?[^:%]
?\?\?[^:%?]
raczej)??a
sięa
.%>
zamiast>%
.DO,
206205 bajtów(-1 dzięki pułapkowi cat)
Nowe linie są tutaj tylko dla czytelności.
Modyfikuje
s
na miejscu. Testowane z GCC i clang na Fedorze Workstation, x86, w trybie 32-bitowym i 64-bitowym.C nie jest tu najlepszym językiem do gry w golfa.
źródło
C is not exactly the best language for golfing here.
bez żartów. Wygląda dobrze :) Myśląc wstecz, powinienem był zmusić wszystkie pytania, aby dodać +1 lub +2 bajty, jeśli użyły jednej z postaci, którą xD lub Trigraf tworzy xDJavaScript (ES6), 106 bajtów
W jaki sposób?
To jest całkiem proste.
Należy jednak pamiętać, że:
Gdy i jest mniejsze niż 9 , wyrażenie
'<:<%%'[i-9] + ':>%>:'[i-9]
ocenia,undefined + undefined
który jest równyNaN
(fałsz zgodnie z oczekiwaniami).Gdy i jest większe lub równe 9 , wyrażenie
'??' + "=/'()!<>-"[i]
ocenia, do"??" + undefined
czego jest przymuszany do łańcucha"??undefined"
(prawda, gdy spodziewamy się wyniku fałszowania).Dlatego musimy przetworzyć test w tej kolejności.
Przypadki testowe
Pokaż fragment kodu
źródło
Rubinowy , 104 + 1 = 105 bajtów
Używa
-p
flagi dla bajtu +1.Wypróbuj online!
źródło
JavaScript (ES6),
131123 bajtówźródło
PHP, 112 bajtów
Wypróbuj online!
PHP, 115 bajtów
Wypróbuj online!
PHP, 124 bajty
Rozwiązanie Regex
Wypróbuj online!
źródło
JavaScript (ES6), 113 bajtów
Nie najkrótszy, ale chciałem spróbować innego podejścia.
źródło