W odróżnieniu od większości języków Python ocenia a<b<c
jak byłoby to zrobić w matematyce, rzeczywiście porównując trzy numery, w przeciwieństwie do porównywania logiczną a<b
do c
. Poprawnym sposobem napisania tego w C (i wielu innych) byłoby a<b && b<c
.
W tym wyzwaniu Twoim zadaniem jest rozwinięcie takich łańcuchów porównawczych o dowolnej długości z Python / intuicyjnej reprezentacji do sposobu, w jaki zostałby napisany w innych językach.
Dane techniczne
- Twój program będzie musiał obsługiwać operatorów:
==, !=, <, >, <=, >=
. - Dane wejściowe będą miały łańcuchy porównania zawierające tylko liczby całkowite.
- Nie martw się o prawdziwość jakichkolwiek porównań po drodze, jest to wyłącznie parsowanie / syntaktyczne wyzwanie.
- Dane wejściowe nie będą zawierały żadnych białych znaków, aby zapobiec odpowiedziom, które trywializują parsowanie przez podział na spacje.
- Jednak dane wyjściowe mogą zawierać pojedynczą przestrzeń otaczającą albo tylko
&&
operatory, albo operatory porównania i operatory&&
, albo żadną, ale być spójne.
Przypadki testowe
Input Output
---------------------------------------------------------------
3<4<5 3<4 && 4<5
3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9
3<5==6<19 3<5 && 5==6 && 6<19
10>=5<7!=20 10>=5 && 5<7 && 7!=20
15==15==15==15==15 15==15 && 15==15 && 15==15 && 15==15
To jest golf-golf, więc wygrywa najkrótszy kod w bajtach !
code-golf
parsing
conversion
syntax
code-golf
sequence
primes
code-challenge
geometry
optimization
code-golf
graph-theory
code-golf
number-theory
primes
integer
code-golf
source-layout
cops-and-robbers
code-golf
source-layout
cops-and-robbers
code-golf
sequence
primes
integer
code-golf
math
number-theory
primes
rational-numbers
code-golf
math
sequence
number-theory
primes
code-golf
string
code-golf
math
combinatorics
permutations
restricted-complexity
code-golf
array-manipulation
code-golf
number
sequence
code-golf
number
sequence
code-golf
binary-matrix
code-golf
math
tips
javascript
algorithm
code-golf
string
code-golf
number
sequence
code-golf
math
arithmetic
parsing
code-golf
number
sequence
primes
code-golf
string
ascii-art
geometry
integer
code-golf
geometry
code-golf
number
array-manipulation
code-golf
math
geometry
code-golf
number
sequence
arithmetic
integer
code-golf
string
kolmogorov-complexity
code-golf
number
code-golf
number
chess
code-golf
sequence
decision-problem
subsequence
code-golf
math
number
primes
code-golf
primes
permutations
code-golf
integer
probability-theory
statistics
code-golf
string
code-golf
sequence
decision-problem
parsing
board-game
code-golf
binary
graph-theory
code-golf
board-game
classification
tic-tac-toe
code-golf
ascii-art
polyglot
code-golf
date
code-golf
geometry
Maltysen
źródło
źródło
&&
?Odpowiedzi:
Retina ,
332217 bajtów-5 bajtów dzięki @MartinEnder
Wypróbuj online!
źródło
1>-2
nie działa, aby ograniczyć oba końce naraz ...Łuska ,
1614 bajtówDrukuje przestrzeń wokół każdego operatora.
Wypróbuj online!
Wyjaśnienie:
źródło
w
zamiast;
bardziej bezpośredniego podejścia do łączenia łańcuchów ze spacjamiRetina ,
424722 bajtówMasywny golf dzięki Kevin Cruijssen
Wypróbuj online!
źródło
(==|!=|<=?|>=?)
może być\D+
(?<!^|\d)
może być(?<=\D)
. Również(?=\d+)
niepotrzebne jest, operator zawsze będzie poprzedzony operandem, w którym to momencie możesz upuścić+
po\D
. Istnieje również$&
zamiast$1$2
, a następnie można zapisać kolejny bajt, przechwytując za siebie i patrząc w przyszłość zamiast przechwytywać w przód i patrząc za siebie.(\D(\d+))(?=\D)
w linii 1, a$1&&$2
w linii drugiej wystarczy ( 22 bajty ). Wypróbuj tutaj.V , 37 bajtów
Wypróbuj online!
Hexdump:
źródło
Clojure, 88 bajtów
Aktualizacja:
subs
zamiastclojure.string/join
.źródło
J ,
5946 bajtówWypróbuj online!
Jak to działało
Szukamy granic operatora. Łańcuchy „Ścięty” i „skrócony” zamieniane są na zera i na te, w których 0 to cyfry, a następnie xored razem. Wpisz zero, aby dopasować długość.
źródło
Python 2 ,
60595857 bajtówWypróbuj online!
źródło
re.sub(r'\D(\d+)(?=\D)',r'\g<0>&&\1',s)
oszczędza 1 bajt.Węgiel drzewny, 29 bajtów
Dwa nieco odmienne sformułowania tego samego podstawowego algorytmu. Łańcuch wejściowy jest iterowany przez znak. Po znalezieniu cyfr są one gromadzone w zmiennej. Po znalezieniu granicy między liczbą a operatorem drukowane jest dodatkowe „&&” plus zmienna, a zmienna jest kasowana. Zmienna jest początkowo inicjowana do spacji, aby pierwsza granica nie wyzwalała dodatkowego „&&”.
źródło
Galaretka , 16 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Java 8, 46 bajtów
Wyjaśnienie:
Wypróbuj tutaj.
Wyjaśnienie Regex:
Przykład zamiany krok po kroku:
źródło
Perl 5 , 47 + 1 (-p) = 48 bajtów
Wypróbuj online!
źródło
Rubinowy , 37 bajtów
Wypróbuj online!
źródło
JavaScript (SpiderMonkey) , 43 bajty
Wypróbuj online!
źródło