Krypta po drodze do Skulldust

Gdzie można znaleźć katanę? Jak dojść do Dominion? Wejdź i zapytaj, a dowiesz się na pewno. Dział o problemach na które może się natknąć każdy gracz.

Moderatorzy: beluosus, dEmoraliZator

shanner
Posty: 66
Rejestracja: pt sie 12, 2016 21:06

Re: Krypta po drodze do Skulldust

Post autor: shanner » ndz sie 21, 2016 21:26

z nudów pobrałem słownik słów dopuszczalnych w grach http://sjp.pl/slownik/growy/ i wrzuciłem go wraz z tabliczką do programiku napisanego w pythonie do wyszukiwania anagramów (napisany przeze mnie na kolanie). Po przemieleniu wyszły 8302 słowa. Ktoś chce sprawdzić? :D

Edit: ostatnie słowo znamienne: "wtopili" :P

einstein13
Posty: 119
Rejestracja: czw cze 09, 2016 22:12

Re: Krypta po drodze do Skulldust

Post autor: einstein13 » ndz sie 21, 2016 22:30

Ja chętnie ;)
Mam nawet sposób, żeby nie robić zbyt wiele ;)

Właśnie skończyłem sprawdzać wszystkie kombinacje 1-5 znaków (czyli zarówno krótkie A, jak i dłuższe AEDEG) i przemieliłem w mniej niż godzinę około 370 tysięcy przypadków.

Żadnej komnaty numer 5 :(

Wniosek to jedna z możliwości:
* hasło jest dłuższe niż 5 znaków i składa się z liter w kwadracie
* hasło jest dowolnej długości, składa się z liter w kwadracie i składa się z co najmniej dwóch wyrazów
* hasło jest niepowiązane z literami w sposób bezpośredni (można używać dowolnych liter)
* Weq zrobił jakieś zabezpieczenie, żeby nie dało się wprowadzać zbyt szybko poleceń, inaczej nic nie dają :P

EDIT:
Sprawdziłem dokładnie 370'838 przypadków
Gdybym sprawdził hasła 6-cio literowe, należałoby dodać "zaledwie" 4'180'875 przypadków... Ktoś chce? :twisted:

shanner
Posty: 66
Rejestracja: pt sie 12, 2016 21:06

Re: Krypta po drodze do Skulldust

Post autor: shanner » ndz sie 21, 2016 23:29

https://docs.google.com/spreadsheets/d/ ... sp=sharing
skoro chcesz, to masz :) Anagramy z liter w tabliczce

Edit: taki komentarz do powyższego - słownik użyty przeze mnie jest słownikiem growym, co oznacza, że nie zawiera większości nazw własnych (tylko te, które stały się pospolitymi rzeczownikami), natomiast ma takie śmieci jak odmiana słów :/ Może ktoś ma lepszy słownik - chętnie załaduję.

Edit2: Ty serio brute forcem przemieliłeś 6-cio literowe kombinacje? Przy 25 to raptem 25! Google wyrzuca, że to 1.551121e+25 :D

Edit3: prosiłeś o obcięcie poniżej 6-ciu liter https://docs.google.com/spreadsheets/d/ ... sp=sharing

Edit4: http://www.student.elknet.pl/crypto/main/index.htm może się przydać na przyszłość

einstein13
Posty: 119
Rejestracja: czw cze 09, 2016 22:12

Re: Krypta po drodze do Skulldust

Post autor: einstein13 » pn sie 22, 2016 1:15

Dzięki! :)
Sprawdziłem te dłuższe i niestety nie znalazłem pozytywnego hasła :(
Co do słownika- masz rację, że może nie obejmować wszystkich słów, ale sądzę że i tak to był dobry strzał. Odmiana słów akurat nie jest czymś złym - może pokazywać niektóre zależności lepiej. Ale niestety sprawdzenie wszystkich 8 tysięcy słów, które znalazłeś nie należy do rzeczy "przyjemnych" ;)

Co do kombinacji literowych, to przyjrzałem się zadaniu z bliska i stwierdziłem, że twardy brute force dla wszystkich wyrazów 6-cio literowych, to 25!/19!=127'512'000 kombinacji. Dla krótszych (np. sprawdzonych przeze mnie 5-cio) to dużo mniej (20 razy lub bardziej). Ale mimo wszystko chciałem jeszcze zawęzić poszukiwania. Przykładowo, jeśli masz trzy takie same litery i szukasz kombinacji 3-literowych, może Ci się trafić "DDD" powtórzone aż 6 razy. Trochę skomplikowałem więc algorytm wyszukiwania i ukróciłem tego typu kwiatki do pojedynczego "DDD" :). Serce algorytmu (także Python) zawarte jest w tych dwóch funkcjach:

Kod: Zaznacz cały

def check_consistency(position):
    global prohibited
    global flatten_proh
    global sequence
    global letters
    number = sequence[position]
    before = sequence[:position]
    if number in before:
        return False
    if number >= len(letters):
        return False
    if number in flatten_proh:
        for itr in range(len(prohibited)):
            position_inside = get_position(prohibited[itr], number)
            if position_inside > -1:
                if position == 0 and position_inside > 0:
                    return False
                wrongs = prohibited[itr][position_inside:]
                for num in wrongs:
                    if num in before:
                        return False
                if position_inside > 0:
                    wrongs = prohibited[itr][:position_inside]
                    for num in wrongs:
                        if num in before:
                            return True
                    return False
                return True
    return True  
    
def next_sequence(position):
    global letters
    global flatten_proh
    global sequence
    sequence[position] += 1
    if position == 0:
        if sequence[position] >= len(letters):
            return False
        if not check_consistency(position):
            return next_sequence(position)
    if sequence[position] >= len(letters):
        return next_sequence(position - 1)
    if check_consistency(position):
        if position >= len(sequence)-1:
            return True
        sequence[position+1] = -1
        return next_sequence(position + 1)
    return next_sequence(position)
Niestety nie mam pewności, czy całość działa w 100% dobrze, gdyż nie rozpisywałem sobie algorytmu na kartce, a patrzyłem tylko na uproszczony model (4 litery, 2 takie same, pozostałe różne) i działało to wyśmienicie. Tak jak wspominałem powyżej, wygenerowałem wszystkie zbitki do 5 liter włącznie i wpisałem je (sposobem) do gry. Wynik negatywny.

Inne podejście do krypty nr 4
Wydawało mi się, że nie znajdę żadnego wyjścia z powyższej sytuacji, ale dzisiaj jeden kolega podał mi ciekawe rozwiązanie do sprawdzenia:

Istnieje metoda szyfrowania na kwadratach (niestety nie znam jej nazwy). Używasz kartki w kratę z powycinanymi okienkami (wielkości pojedynczych liter). Teraz kładziesz ją na kartce i piszesz w wycięte okienka litery z wiadomości. Gdy skończą Ci się otwory, obracasz kartkę o 90 stopni i postępujesz analogicznie do powyższego. Jeśli wyciąłeś poprawnie okienka, nie napiszesz dwóch liter w tym samym miejscu.
Niestety ta metoda działa na kwadraty o boku długości parzystej (np. 6). Ale można ją "uogólnić" do nieparzystej poprzez wpisanie w środkową kratkę dowolnej litery.
Jeśli założymy, że cały kwadrat to wiadomość zakodowana w powyższy sposób, to jest szansa na jej rozkodowanie.
I teraz analiza ilości kombinacji w tej wersji:
  • Jedno okienko obejmuje 4 pola (4 obroty po 90 stopni daje 360 stopni, czyli pełny obrót).
  • Mamy 25-1=24 litery w wiadomości
  • Ilość wyciętych okienek wynosi 24/4=6
  • Każde okienko można umieścić na 4 różne sposoby (wyciąć w 4 różnych miejscach)
  • Daje to 4^6=4096 możliwych kartek-kluczy
  • Niestety nie znamy kierunku obrotu w celu rozkodowania wiadomości, więc:
  • Ilość możliwych wiadomości wynosi 4096*2=8192
Myślę, że zajmę się tym w najbliższych dniach, ale nie tej nocy ;)

Ps.: dzięki za ostatni link!

Slashu
Posty: 146
Rejestracja: czw maja 14, 2015 13:15

Re: Krypta po drodze do Skulldust

Post autor: Slashu » pn sie 22, 2016 15:02

Jeśli polskie znaki zostały użyte nieprzypadkowo, co jest wysoce prawdopodobne, zważywszy na ich brak w poprzednich zagadkach, to wychodzi na to, że to faktycznie może być to więcej niż jedno słowo -
żadne z tych ponad 8000 słów nie jest rzeczownikiem zawierającym w sobie jednocześnie "ó" i "ę"...

einstein13
Posty: 119
Rejestracja: czw cze 09, 2016 22:12

Re: Krypta po drodze do Skulldust

Post autor: einstein13 » pn sie 22, 2016 19:42

Też myślę, że jest tam kilka słów. Stawiam na to, że będzie tam zagadka w stylu "Co ma dwie ręce i trzy nogi?" [starzec].

Co do samej krypty, jestem trochę przestraszony... Zobaczcie to:
viewtopic.php?f=35&t=233&p=2115&hilit=krypta.are#p2115
Jeśli jest tam 20 komnat... A my jesteśmy na 5-tej (liczy się od 0!).
Początkowo myślałem, że może jednak to nie to miejsce, ale dzięki 3dh odkryłem, że jednak TO JEST TA KRYPTA! :o

Slashu
Posty: 146
Rejestracja: czw maja 14, 2015 13:15

Re: Krypta po drodze do Skulldust

Post autor: Slashu » pn sie 22, 2016 20:30

Też przyszło mi do głowy, że to może być zagadka ze wszystkich liter:D

Co do krypty:
Ma ona 16 albo 17 zagadek - sprawdziłem to już wcześniej. (rozbiezność wynika z faktu, że jedna z zagadek ma trzy komnaty, a finałowe pomieszczenie jest bez zagadek). Przyznam się, że grzebałem trochę przy sejwach, żeby mieć pewność;D. Moim zdaniem zagadka na której jesteśmy jest jedną z trudniejszych ze wszystkich 16/17..

shanner
Posty: 66
Rejestracja: pt sie 12, 2016 21:06

Re: Krypta po drodze do Skulldust

Post autor: shanner » wt sie 23, 2016 14:39

Czyli bazując na średniej ilości liter w anagramach z tabliczki (~6.5) to będą 3-4 słowa. Jak wrócę do domu może pobawię się w zestawy słów, które wyczerpują wszystkie litery w tabliczce.

einstein13
Posty: 119
Rejestracja: czw cze 09, 2016 22:12

Re: Krypta po drodze do Skulldust

Post autor: einstein13 » wt sie 23, 2016 15:13

Zastanawiałem się nad wykluczeniem niektórych zbitek liter i można od razu zauważyć, że w tabliczce jest nadmiar samogłosek (dużo jak na nasz język). Stąd też chciałem programowo odrzucić błędne zestawy liter, które nie stworzą słów. No i pierwsze poszukiwania, to odrzucenie 3 samogłosek (nie zawierających spójnika "i" lub "a" w środku!). Ale nie mam co do tego pewności - nie wiem, czy istnieją słowa z 3 samogłoskami w środku lub 2 na początku/ na końcu. Inaczej: czy istnieje sylaba "e" lub "a", będąca częścią słowa?
Za to znalazłem ciekawy artykuł:
http://wspanialarzeczpospolita.pl/2014/ ... amoglosek/
Polecam przeczytać ;)
Wprawdzie nie rozwiązuje tego problemu, ale i tak jest bardzo ciekawy i może być kiedyś pomocny! :)

Slashu
Posty: 146
Rejestracja: czw maja 14, 2015 13:15

Re: Krypta po drodze do Skulldust

Post autor: Slashu » wt sie 23, 2016 19:59

Jeśli to typowa zagadka, to powinna zawierać słowa charakterystyczne dla zagadek:
Co, jak, ma, jest/em. Z braku liter zostają tylko dwa ostatnie. Myślę, że będzie to coś w stylu: "jest zielone i ma trzy nogi". Dodatkowo rzucił mi się w oczy zbitek liter p,g,d,o,o. Może zagadka zawiera słowo "pogoda/ę"..

shanner
Posty: 66
Rejestracja: pt sie 12, 2016 21:06

Re: Krypta po drodze do Skulldust

Post autor: shanner » śr sie 24, 2016 0:05

Log z dalszych poszukiwań: tekst w lustrze i odwrócony dalej nie ma sensu :D

einstein13
Posty: 119
Rejestracja: czw cze 09, 2016 22:12

Re: Krypta po drodze do Skulldust

Post autor: einstein13 » śr sie 24, 2016 0:10

Trochę się zagalopowałem :)
Zgodnie z metodą szyfracji na kwadratach opisaną w tym miejscu:
viewtopic.php?p=9470#p9470
zrobiłem listę możliwych kluczy i wynik ich działania:
https://docs.google.com/spreadsheets/d/ ... sp=sharing

Na dziś jestem trochę zbyt zmęczony, żeby dzisiaj sprawdzić każdy klucz. Dlatego zachęcam każdego chętnego do edycji. Sprawdzisz klucz- wstaw "1" obok niego. Jeśli trafiłeś w jakąś wiadomość, podziel się z nami :) Najlepiej, jeśli podasz wartości z dwóch kolejnych kolumn. Nie spoilerują one aż tak bardzo ;) (pierwsza z nich to unikatowa kombinacja wycięć, a druga to kierunek obrotu; Po podaniu na forum, usunę arkusz, żeby nasi następcy nie mieli tak łatwego zadania).

Powiem, że w jednej z wersji sprawdziłem wszystkie kombinacje, gdzie nie powtarzają się samogłoski powyżej 2 razy i nie znalazłem żadnego rozwiązania (było to około 1700 możliwości). Mogłem coś przeoczyć. Ale jeśli ktoś mi pomoże sprawdzać ten arkusz, wykluczymy kolejną metodę deszyfracji tekstu (albo znajdziemy rozwiązanie). Ilość możliwości to 8192, więc nie aż tak dużo ;)

shanner
Posty: 66
Rejestracja: pt sie 12, 2016 21:06

Re: Krypta po drodze do Skulldust

Post autor: shanner » śr sie 24, 2016 1:00

Mógłbyś pokazać jakiś przykład, bo chcę mieć pewność, że postępuję zgodnie z instrukcjami

einstein13
Posty: 119
Rejestracja: czw cze 09, 2016 22:12

Re: Krypta po drodze do Skulldust

Post autor: einstein13 » śr sie 24, 2016 1:15

Kod: Zaznacz cały

ITMSOGAEETIJJWLIOESDĘDPÓ
To czysty bełkot- ja tu nie widzę żadnych słów.
Dlatego oznaczam go jako "1" obok (patrz trzecia linia w pliku)
Interesuje nas coś w stylu:

Kod: Zaznacz cały

ILETOJESTDWAPLUSDWA
Co będzie się tłumaczyło na zdanie:

Kod: Zaznacz cały

ILE TO JEST DWA PLUS DWA
(po prostu możemy dodawać spacje, żeby uzyskać słowa)

A jak znajdziesz prawidłowe zdanie/ słowa/ zagadkę, to zalecam podesłać nam to, co jest po prawej, czyli (na przykład):

Kod: Zaznacz cały

[0, 0, 0, 0, 3, 3]
1
Nam pozwoli to jasno zidentyfikować właściwą linię, a "następnym pokoleniom" da rozwiązanie w postaci klucza do klucza :lol:

Oczywiście to, że przejrzymy wszystkie rekordy, nie oznacza, że znajdziemy treść zagadki!

shanner
Posty: 66
Rejestracja: pt sie 12, 2016 21:06

Re: Krypta po drodze do Skulldust

Post autor: shanner » śr sie 24, 2016 9:53

Miałem na myśli deszyfrowanie. Nie jestem do końca pewny, że dobrze zrozumiałem Twoje instrukcje.

ODPOWIEDZ