-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!pwr.wroc.pl!news.wcss.wroc.pl!newsfeed.
pionier.net.pl!news-2.dfn.de!news.dfn.de!newsfeed.fsmpi.rwth-aachen.de!news.mix
min.net!aioe.org!.POSTED!not-for-mail
From: Vax <...@i...nie.ma>
Newsgroups: pl.comp.programming
Subject: Re: Zabawy w algorytmikę.
Date: Sun, 12 May 2013 16:15:46 +0200
Organization: Aioe.org NNTP Server
Lines: 67
Message-ID: <kmo858$d7j$1@speranza.aioe.org>
References: <kmg41t$iuu$1@node2.news.atman.pl> <kmjdfe$lt2$1@speranza.aioe.org>
<4...@g...com>
<kml6fm$7ev$1@node1.news.atman.pl> <kmlqks$cgl$1@speranza.aioe.org>
<3...@g...com>
NNTP-Posting-Host: uA4zUKHfM1xb1Z6mIVbwjQ.user.speranza.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Complaints-To: a...@a...org
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328
Thunderbird/17.0.5
X-Notice: Filtered by postfilter v. 0.8.2
Xref: news-archive.icm.edu.pl pl.comp.programming:203323
[ ukryj nagłówki ]W dniu 2013-05-12 01:59, M.M. pisze:
[...]
> Mozna troche przerobic Twoje spostrzezenie. Kazdy klik pewne pola zapala a
> inne gasi. Niech to bedzie klik x. Wiec klik x determinuje kliki ktore
> musza zgasic to co on zapalil. Jesli kolejnosc jest niewazna, to klik x
> moze determinowac je jako kliki w nastepnej kolejnosci. Wiec kazde pole moze
> miec zapamietany numer+1 rekurencyjnego wywolania w ktorym zostalo zapalone
> lub jeden jesli bylo dane w ukladzie poczatkowym. Algorytm w kazdym
> kroku musi zgasic dowolne pole o najmniejszym numrze. To na pewno zmniejszy
> breanch-faktor.
W skrócie, to wyszedłem z takiego założenia:
1. działa to jak XOR, czyli jest naprzemienne
2. skoro kolejność nie ma znaczenia, to ja ją (na swoje potrzeby)
uporządkuję np. od góry, do dołu
3. po wykonaniu wszystkich klików pierwszego wiersza już do niego nie
wracam, zatem w wierszu drugim MUSZĘ ustawić pożądany stan wiersza
pierwszego, klikając POD polami (i TYLKO POD nimi), które mają ów stan
niewłaściwy. W kolejnym wierszu już takiej szansy nie będzie, więc nie
zostanie spełniony warunek zadania.
np. gdy pierwszy rząd po testowym klikaniu wygląda tak:
11010001 to muszę kliknąć pod nim: --x-xxx- (gdzie "x" to click, a "-"
jego brak, nie chcę używać 0/1 żeby się komuś clicki i stany nie myliły :)),
rząd 1 wówczas wygląda już tak: 11111111,
nastąpiły zmiany w rzędzie 2 oraz 3, ale tu już iteracyjnie powtarzamy
aż do ostatniego, po czym badamy, czy on też przyjął postać 11111111.
> Pozostaje kwestia czy mozna jakos uniknac spamietywania?
Trzymając się dalej tablicy np. 8 x 1024, musimy wykonać najwyżej 256
iteracji, od 00000000(bin) do 11111111(bin), czyli np. zwykłą pętlą od 0
do 255 sobie polecieć. Licznik pętli ma już sam z siebie na sobie
zapisane wszystkie układy "klików" do przetestowania.
Gdy kombinacja dla pierwszego wiersza jest dobra, to mamy sukces (i
możemy prościutko odtworzyć wszystkie pola wymagające kliknięcia).
> Algorytm z spamietywaniem jest prosty Jesli docieramy do ukladu ktory byl
> wczesniej, to wnioskujemy ze zaczyna sie petlic. Ale takie podejscie
> wymagaloby sporo pamieci.
Tu, poza tablicą wejściową, masz licznik + 2 bufory o rozmiarze
krótszego boku każdy, wszystko na bitach. Nazwa pliku zajmie więcej
pamięci ;)
> Moze wystarczy zapamietac z kazdym polem, ze juz bylo raz zapalone i potem
> zgaszone? Intuicja podpowiada, ze nie ma sensu zapalac danego pola dwa razy.
> Nie wiem czy moja intuicja sie nie myli, ale jesli to prawda, to algortym
> moze przerwac przeszukiwanie danej galezi, jesli nie da sie zgasic jakiegos
> pola bez zapalania tych pol, ktore juz wczesniej byly zgaszone.
Jeszcze raz: iteracyjnie XOR-ujesz licznik z pierwszym rzędem i drugim,
pamiętając, że XOR w rzędzie klikniętym to nie zwykły XOR, ale również
odwrócenie sąsiadujących bitów.
Tak swoją drogą, to znalezienie nieiteracyjnego algorytmu (lub formuły),
które dla danego ciągu bitów zwróca ciąg z którym wystarczy RAZ wykonać
"zwykły XOR" (czyli: 0001 => 0011, 0010 => 0111, 0011 => 0100 itd.) to
też fajna rozrywka, ale to takie "podzadanie" w zadaniu raczej :)
Kontynuując:
Po wykonaniu testowanej serii klików na pierwszym rzędzie (pamiętaj,
pierwszy wiersz zmienia się "nieco magicznie", drugi to już zwykły XOR,
poprzez negację wiersza pierwszego otrzymujemy mapę kliknięć do
wykonania na następnym wierszu. I tak z każdym kolejnym wierszem aż do
ostatniego. I albo się udało (po "magicznym XOR" mam same jedynki), albo
przechodzimy do kolejnej kombinacji kliknięć w pierwszy rząd.
Następne wpisy z tego wątku
- 12.05.13 16:44 bartekltg
- 12.05.13 17:14 Vax
- 12.05.13 18:23 A.L.
- 12.05.13 18:40 bartekltg
- 12.05.13 18:44 A.L.
- 12.05.13 19:24 bartekltg
- 12.05.13 19:48 A.L.
- 12.05.13 20:02 bartekltg
- 12.05.13 21:21 Vax
- 12.05.13 22:49 bartekltg
- 12.05.13 22:51 bartekltg
- 12.05.13 23:01 Vax
- 13.05.13 00:09 bartekltg
- 13.05.13 00:12 bartekltg
- 13.05.13 01:13 A.L.
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-10-03 Nieparzyste dmuchanie
- 2024-10-03 Prognozowanie zużycia energii przez PGE?
- 2024-10-03 Re: Drugi ekran na Androidzie
- 2024-10-03 sprawiedliwosc nierychliwa
- 2024-10-03 zloto
- 2024-10-03 Odkurzacz mnie bije :(
- 2024-10-03 Gdańsk => Technical Lead ( (Java Background)) <=
- 2024-10-03 Warszawa => Mid IT Recruiter <=
- 2024-10-03 Olsztyn => Sales Specialist <=
- 2024-10-03 Leszczyna nie zna prawa?
- 2024-10-03 Warszawa => OpenText ECM Specialist <=
- 2024-10-03 Blokowanie informacji - test
- 2024-10-02 Warszawa => Fullstack Developer <=
- 2024-10-02 Katowice => QA Engineer <=
- 2024-10-02 Gdynia => Data Scientist <=