Wyzwanie
Biorąc pod uwagę dwa identyfikatory pytań, spróbuj dowiedzieć się, jak są one podobne, patrząc na odpowiedzi.
Detale
Otrzymasz dwa identyfikatory pytań codegolf.stackexchange.com
; możesz założyć, że istnieją pytania dotyczące obu identyfikatorów, które nie zostały usunięte, ale niekoniecznie są otwarte. Musisz przejrzeć wszystkie odpowiedzi i określić minimalną odległość Levenshteina między kodem w odpowiedziach na dwa pytania (nie uwzględniając usuniętych odpowiedzi). Oznacza to, że powinieneś porównać każdą odpowiedź w pytaniu 1 z każdą odpowiedzią w pytaniu 2 i określić minimalną odległość Levenshteina. Aby znaleźć kod w odpowiedzi, załóż następującą procedurę:
Jak znaleźć fragment kodu
Treść tekstu jest faktycznym kodem odpowiedzi, jeśli znajduje się w odwrotnych wierszach i znajduje się we własnej linii lub jeśli jest wcięta 4 spacjami, z pustą linią nad nią, chyba że powyżej nie ma tekstu.
Przykłady poprawnych i niepoprawnych fragmentów kodu (ze .
spacją) (oddzielonych toną znaków równości)
This is `not a valid code snippet because it is not on its own line`
========================================
This is:
`A valid code snippet`
========================================
This is
....not a valid code snippet because there's no spacing line above
========================================
This is
....A valid code snippet because there's a spacing line above
========================================
....Valid code snippet because there's no other text
========================================
Jeśli w odpowiedzi nie ma poprawnych fragmentów kodu, całkowicie zignoruj odpowiedź. Pamiętaj, że powinieneś wziąć tylko pierwszy kod.
Ostateczne specyfikacje
Dwa identyfikatory pytań można wprowadzić w dowolnym rozsądnym formacie dla 2 liczb całkowitych. Wynik powinien być najmniejszą odległością Levenshteina między dowolnymi dwoma prawidłowymi odpowiedziami z obu wyzwań. Jeśli nie ma „poprawnych” odpowiedzi dla jednego lub obu wyzwań, wynik -1
.
Przypadek testowy
W przypadku wyzwania 115715
(Embedded Hexagons) i 116616
(Embedded Triangles) zarówno przez towarzysza SparklePony, dwie odpowiedzi na węgiel drzewny (oba przez KritixiLithos) miały odległość Levenshteina równą 23, co było najmniejsze. Zatem twój wynik 115715, 116616
byłby 23
.
Edytować
Możesz założyć, że pytanie ma maksymalnie 100 odpowiedzi z powodu ograniczenia rozmiaru strony API. Nie należy ignorować znaków wstecznych w blokach kodu, tylko jeśli sam blok kodu jest tworzony za pomocą znaków wstecznych, a nie we własnej linii.
Edytować
Okres nagród wygasłem wcześniej, ponieważ poprosiłem mod, aby uzyskał tygodniowe zawieszenie i nie chciałem, aby nagroda była automatycznie przyznawana za najwyższą odpowiedź (która jest najdłuższa). Jeśli nadejdzie nowe zgłoszenie lub zgłoszenie zostanie na tyle zagrane w golfa, że będzie krótsze niż 532 bajty przed faktycznym końcem okresu nagród (UTC 00:00 w dniu 1 czerwca), dam nagrodę za dotrzymanie mojej obietnicy po zawieszenie wygasa. Jeśli dobrze pamiętam, następnym razem muszę podwoić okres nagrody, więc jeśli dostaniesz odpowiedź, możesz otrzymać +200 :)
źródło
Odpowiedzi:
PowerShell, 532 bajtów
Zostawiłem tam nowe wiersze dla pewnej czytelności. Są nadal odzwierciedlone w mojej liczbie bajtów.
Jestem całkiem pewien, że mam na to wpływ. Trudną częścią było dla mnie uzyskanie dystansu Levenshteina, ponieważ PowerShell nie ma wbudowanego do tego celu, o ile wiem. Dzięki temu mogłem odpowiedzieć na powiązane wyzwanie na dystansie Levenshtein . Kiedy mój kod odnosi się do anonimowej funkcji dla LD, możesz odnieść się do tej odpowiedzi, aby uzyskać bardziej szczegółowe wyjaśnienie, jak to działa.
Kod z komentarzami i wskaźnikiem postępu
Kod może być bardzo powolny (z powodu LD), więc wbudowałem dla siebie kilka wskaźników postępu, dzięki czemu mogłem śledzić akcję, gdy się rozwijała i nie zakładać, że utknął gdzieś w pętli. Kod monitorowania postępu nie znajduje się w górnym bloku ani nie jest liczony w mojej liczbie bajtów.
Moją logiką do znajdowania bloków kodu jest wzięcie odpowiedzi jako HTML i poszukiwanie zestawu znaczników kodu, opcjonalnie otoczonego przez zestaw znaczników wstępnych, który zaczyna się w swojej linii. Podczas testowania znalazł wszystkie prawidłowe dane w 6 różnych zestawach pytań.
Próbowałem pracować na podstawie kodu przeceny, ale znalezienie odpowiedniego bloku kodu było zbyt trudne.
Przykładowe przebiegi
źródło
Java + Jsoup, 1027 bajtów
Pierwsze dwa argumenty to identyfikatory pytań.
Gra w golfa:
Czytelny:
}
źródło
Mathematica, 540 bajtów
Wejście
wynik
wykorzystuje wbudowany EditDistance, który „podaje odległość edycji lub Levenshteina między łańcuchami lub wektorami u i v”.
Co do przypadku matematyki
zwraca 23
Chyba mogę trochę dłużej grać w golfa.
Trwa kilka minut
źródło