< Mój ojciec, jeszcze z czasów liczyde³ twierdzi ¿e umie policzyæ
pierwiastek.>
Brawo, brawo, o to mi chodzilo
pytanie tylko jak
bo oprocz sumy to mi jakos ciezko
wiesz moze jak takie obliczenia prowadzic ??
pozdrawiam
Michal
Na Ukrainie Panie w sklepach dodają ceny na takim dużym liczydle;)
Widziałam na własne oczy.
Użytkownik "MK" <mi-koz[NIE LUBIE SPAMU]@wp[precz ze spamem].pl> napisał w
wiadomości news:dehdbu$8tr$ snipped-for-privacy@nemesis.news.tpi.pl...
Wed, 24 Aug 2005 11:06:53 +0200 jednostka biologiczna o nazwie "MK"
<mi-koz[NIE LUBIE SPAMU]@wp[precz ze spamem].pl> wyslala do portu 119
jednego z serwerow news nastepujace dane:
Rozumiem twój problem. Właśnie mam na drugim kompie uruchomiony
CP/M-86 i też kombinuję "co by tu jeszcze" :-)
MK <mi-koz[NIE LUBIE SPAMU]@wp[precz ze spamem].pl> napisał(a):
Może algorytm herona ?
Osoby chore na autyzm podobno błyskawicznie wyciągają pierwiastki
z ogromnych liczb. Ciekawe wg jakiego algorytmu?
WM
Wlodzimierz napisał(a):
Intuicyjnie, wydaje mi sie ze metaoda kolejnych przyblizen.
Tak przynajmniej ja bym sie do tego zabral.
Autyzmy nie mam ... chyba :)
Użytkownik "MK" <mi-koz[NIE LUBIE SPAMU]@wp[precz ze spamem].pl>
napisał w wiadomości news:dehdbu$8tr$ snipped-for-privacy@nemesis.news.tpi.pl...
a'propos: żona moja posiada skarb w postaci wielgachnego
przedwojennego jeszcze liczydła. To było liczydło profesjonalne,
zawodowego księgowego (czy jak się tam wtedy to nazywało), ono oprócz
normalnych rzędów z dziesięcioma krążkami na każdym i wydzielonych
dwóch rzędów do liczenia groszy ma jeszcze coś dziwnego: znajdujący
się pomiędzy tymi groszowymi a normalnymi dodatkowy pręt na którym są
tylko cztery krążki. Do czego to było? Do liczenia "ćwiartek"?
J.
To prawda, wystarcza zaledwie 2 (nieskonczone... ;-)) rzedy koralików,
by na takim liczydle (zwanym w informatyce maszyna dwulicznikowa)
zasymulowac maszyne Turinga, a wiec i dowolny program, m.in. Matlaba. :-)
Pozdrawiam
Piotr Wyderski
Hm, uwzgledniajac odleglosc pomiedzy "punktami przerzutu" i skonczona
predkosc swiatla, mozna by wprowadzic nowa jakosc do teorii logarytmow
:-)
Hm .. mowisz ze dwa rzedy wystarcza ? Jak chcesz zakodowac informacje
i jak chcesz wykonac operacje np przesuniecia tasmy o jeden znak ?
J.
Tak. Udowodni³ to Minsky w latach chyba 60-tych.
Idea jest trudna do natychmiastowego uchwycenia, wiêc
dojd¼my do tego ma³ymi krokami. Mamy maszynê Turinga
o k symbolach ta¶mowych. Mo¿emy j± zasymulowaæ za
pomoc± maszyny dwustosowej: jeden ze stosów bêdzie
reprezentowa³ czê¶æ ta¶my na lewo od g³owicy, a drugi
na prawo. Komórki stosu odpowiadaj± bezpo¶rednio
komórkom MT, a przesuniêcie g³owicy to zdjêcie symbolu
z jednego stosu i od³o¿enie go na drugi; operacje zapisu
nowego symbolu i odczytu wierzcho³ków stosu s± oczywiste.
Do tego miejsca wszystko powinno byæ jasne.
Teraz zasymulujemy te 2 stosy za pomoc± 3 liczników, gdzie
ka¿demu stosowi przydzielimy jeden licznik, a pozosta³y jeden
bêdzie "rejestrem tymczasowym". Symbole stosowe to symbole
oryginalnej maszyny i jeden symbol zarezerwowany do oznaczania
koñca danych na stosie (tj. dna stosu), by sterowanie wiedzia³o,
kiedy skonczyæ. Ca³± zawarto¶æ ka¿dego ze stosów mo¿emy
interpretowaæ jako pojedyncz± liczbê naturaln± w uk³adzie pozycyjnym
o podstawie b = k+1 -- przez odpowiednio wielokrotne dzielenie z reszt±
przez b mo¿emy z tej liczby wyci±gn±æ zawarto¶æ dowolnie wybranej
komórki. Jak ³atwo siê domy¶liæ, liczby koduj±ce zawarto¶æ stosów bêd±
pamiêtane w licznikach.
Aby w pe³ni odtworzyæ funkcjonalno¶æ stosów, trzeba dostarczyæ
operacji push(x), pop() i x = top(). Zostan± one oparte na operacjach
mno¿enia i dzielenia przez r oraz dostarczanym przez licznik operacjach
inkrementacji i dekrementacji (na liczydle: dosuwanie albo odsuwanie
jednego koralika). Dodawanie i odejmowanie liczby x takiej,
¿e 0 <= x < b, jest ³atwe i odbywa siê przez x-krotn± inkrementacjê
/dekrementacjê zawarto¶ci licznika; poniewa¿ b jest sta³±, to mo¿na to
zakodowaæ w sterowaniu skoñczonym (mówi±c po "elektronicznemu":
zrealizowaæ odpowiedni± maszynkê stanów). Maj±c te operacje, mno¿enie
i dzielenie przez r te¿ staje siê proste -- np. to ostatnie to wielokrotne
odjêcie b od jednego licznika i dodanie 1 do drugiego, a¿ siê pierwszy
z nich wyzeruje. I to wszystko: push(x) to pomno¿enie zawarto¶ci licznika
przez b i dodanie x, pop() to podzielenie przez b, a top() to obliczenie
warto¶ci licznika modulo b (pamiêtaj, ¿e b to sta³a!).
Jak widaæ (mam nadziejê...), 3 liczniki (rzêdy liczyd³a koduj±ce zawarto¶æ
licznika w systemie unarnym) wystarcz± do zakodowania dowolnej MT.
Teraz robi siê jeszcze jeden krok, pokazuj±cy, ¿e 3 liczniki da siê
zakodowaæ na 2 licznikach, ale przypuszczam, ¿e to nie jest dla Ciebie
istotne, tj. chcia³e¶ siê przekonaæ, ¿e pewna _skoñczona_ liczba liczników
wystarczy, a nie wyznaczaæ minimum.
Pozdrawiam
Piotr Wyderski
OK, no to teraz robimy tak: jeden licznik bêdzie u¿ywany jako
rejestr tymczasowy, a w drugim zapamiêtujemy stan trzech
liczników z poprzedniego kroku korzystaj±c z jednoznaczno¶ci
rozk³adu liczby naturalnej na czynniki pierwsze, bior±c np. takie
liczby pierwsze: 2, 3, 5. Wówczas warto¶æ kodowana bêdzie
mia³a postaæ (2^x)*(3^y)*(5^z), gdzie x, y i z to warto¶ci
symulowanych liczników. Inkrementacja/dekrementacja ka¿dego
z nich zamienia siê wiêc na pomno¿enie/podzielenie przez 2, 3
albo 5, co kodujemy w sterowaniu skoñczonym, jak w poprzednim
li¶cie. W ten sam sposób sprawdzamy, czy wybrany licznik ma
warto¶æ 0 -- przez obliczenie jego warto¶ci modulo zwi±zana
z nim podstawa. I to ca³a sztuczka. :-)
Nawiasem mówi±c takie kodowanie warto¶ci wielu zmiennych
w jednej to czêsto wykorzystywany trick teoretyczny, w ten
sposób mo¿na zapisaæ program korzystaj±cy z dowolnie wielu
zmiennych tak, by korzysta³ tylko z jednej zmiennej (+ rejestr
tymczasowy).
Pozdrawiam
Piotr Wyderski
PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.