Jest to nieco proof-golf -jak policjantów i-rabusiów wyzwanie. To jest wątek gliniarzy; wątek złodziei jest tutaj.
Gliny
Twoim zadaniem jest zdefiniowanie abstrakcyjnego systemu przepisywania, w którym trudno jest ustalić dostępność jednego słowa od drugiego. Przygotujesz następujące rzeczy:
Zestaw symboli zwany alfabetem. (Możesz używać do nich dowolnych znaków Unicode, ale nie używaj białych znaków lub symboli, które trudno od siebie odróżnić).
Ciąg źródłowy składa się z symboli ze swoim alfabecie.
Ciąg docelowy złożony z symboli z twojego alfabetu.
Zestaw reguł przepisywania przy użyciu znaków z alfabetu. (Zobacz poniżej definicję reguły przepisywania).
Dowód pokazujący, czy łańcuch źródłowy może zostać przekształcony w łańcuch docelowy przez kolejne stosowanie reguł przepisywania. Dowód ten może składać się z rzeczywistej sekwencji kroków przepisywania lub matematycznego dowodu, że taka sekwencja musi istnieć, lub matematycznego dowodu, że taka sekwencja nie istnieje.
Opublikujesz pierwsze cztery z nich, zachowując dowód w tajemnicy; złodzieje spróbują złamać twoją odpowiedź, przedstawiając własny dowód, że łańcuch docelowy może lub nie może zostać osiągnięty z ciągu źródłowego. Jeśli zgłoszenie nie zostanie złamane w ciągu dwóch tygodni , możesz oznaczyć je jako bezpieczne i edytować w dowodzie.
Zgłoszenia będą oceniane według liczby znaków w regułach przepisywania oraz ciągów źródłowych i docelowych, jak wyszczególniono poniżej. Zwycięzcą zostanie zgłoszenie bez oceny z najniższą liczbą punktów.
Co to jest zasada przepisywania?
Reguła przepisywania to po prostu para ciągów w twoim alfabecie. (Każdy z tych ciągów może być pusty.) Zastosowanie reguły przepisywania polega na znalezieniu podłańcucha, który jest równy pierwszemu ciągowi w parze, i zastąpieniu go drugim.
Przykład powinien to wyjaśnić:
Załóżmy, że alfabet to A
, B
i C
; ciąg źródłowy to „ A
”; ciąg docelowy to „ C
”, a reguły przepisywania są
A:B
B:BB
B:A
AA:C
wtedy łańcuch docelowy jest osiągalny w następujący sposób:
A
B (using rule 1)
BB (using rule 2)
AB (using rule 3)
AA (using rule 3)
C (using rule 4)
Punktacja
Twój wynik będzie
- długość łańcucha źródłowego,
- plus długość docelowego ciągu,
- plus długość wszystkich ciągów zawartych w regułach przepisywania,
- plus jeden dodatkowy punkt za każdą regułę przepisywania.
Jeśli napiszesz swoje reguły przepisywania za pomocą separatora dwukropka, jak powyżej, jest to tylko całkowita długość wszystkich reguł przepisywania (w tym separatora) plus długości ciągów źródłowych i docelowych. Im niższy wynik, tym lepiej. Liczba różnych znaków w twoim alfabecie zostanie wykorzystana do zerwania więzi, przy czym mniej będzie lepszych.
Hojność
Chciałbym zobaczyć odpowiedzi, które naprawdę pasują do niskich wyników. Przydzielę 200 powtórzeń pierwszej odpowiedzi, która zdobędzie mniej niż 100 punktów w tym wyzwaniu i nie zostanie złamana.
Mx -> Mxx
regułę, więc skończyłoby się to znacznie bardziej skomplikowane niż Hofstadtera oryginalny.