Ciąg 2D
Na stronach poświęconych matematyce rekreacyjnej trafiam czasem na łamigłówki, które nazywam rasowymi. To te, z napoczęciem których mam problem. Nie wiem, jak je ugryźć, choć są zrozumiałe i w pierwszej chwili wydaje się, że kłopotu nie będzie. Takie zadania uważam za pięciogwiazdkowe, ponieważ najważniejsze to znaleźć na nie sposób, czyli wpaść na pomysł. Nie zawsze się to udaje, bo czasem wiedzy nie staje, czyli nie zna się jakiegoś twierdzenia, a częściej metody, zaś żeby samemu ją odkryć, nie staje intelektu.
Rasowość jest cechą względną – zgryz miewa nie każdy, a poza tym ten, kto ma, przy następnym podobnym zadaniu już mieć nie będzie. Można by jednak uznać za łamigłówki bezwzględnie rasowe te, które stawiają „pomysłowy” opór większości rozwiązujących.
Ostatnio na łamigłówkowym forum Gazety Wyborczej pojawiło się mało znane zadanie sprzed wielu lat (pierwszy opublikował je chyba Ross Honsberger w książce Ingenuity in Mathematics), które zaliczyłbym do rasowych, choć już nie dla mnie.
Do tabeli wpisany jest ciąg liczb całkowitych dodatnich – rzędami ukośnymi, zgodnie ze wskazaniem strzałki. Należy utworzyć wzór na wartość liczby w kolumnie k i w wierszu w. Inaczej mówiąc, chodzi o napisanie wzoru na wyraz ogólny ciągu dwuwymiarowego a(w,k). Na forum gazetowym podane jest rozwiązanie, ale o najważniejszym, czyli o sposobie dojścia do niego, nie wspomniano.
Z zadaniem trudno się uporać, nie znając metody tworzenia wzoru na ciąg, gdy znamy jego początkowy fragment. Pozwolę sobie zatem przedstawić stosowaną w takich przypadkach praktyczną metodę różnic skończonych. W odniesieniu do ciągów nie wygląda ona tak „strasznie” jak w Wikipedii. Przeciwnie, jest raczej rozrywkowa.
Weźmy ciąg z głównej przekątnej tabeli na powyższym rysunku, czyli:
1, 5, 13, 25, 41, 61, 85, …
Tworzymy ciąg różnic między jego kolejnymi wyrazami, potem ciąg różnic między różnicami, następnie ciąg różnic między różnicami między różnicami itd. – dotąd, aż pojawią się zera.
1___5___13___25___41___61
__4___8____12___16__ 20___ (pierwsze różnice)
____4____4____4____4______ (drugie różnice)
______0_____0___ 0_________ (trzecie różnice)
Gdyby już pierwsze różnice były zerowe, to wzór nie zawierałby zmiennych, czyli miałby ogólną postać:
a(n) = c, gdzie c jest jakąś stałą.
Przykład: c = 5; ciąg – 5, 5, 5, 5…
Przy zerowym ciągu drugich różnic wzór wyglądałby tak:
a(n)= bn + c (b i c to stałe).
Przykład: b = 2, c = 3; ciąg – 5, 7, 9, 11.
Gdy – jak w naszym przypadku – zerowe są trzecie różnice, to wzór będzie miał postać:
a(n) = an^2 + bn + c.
Warto zwrócić uwagę, że stopień wielomianu jest zawsze o jeden mniejszy od numeru rzędu, w którym pojawiły się różnice zerowe.
Wracając do naszego przykładu, korzystamy z ostatniego wzoru, aby obliczyć stałe a, b, c. W tym celu kolejno podstawiamy pod n wartości 1, 2, 3; w każdym przypadku wynik powinien być równy odpowiedniemu wyrazowi ciągu, czyli:
Jeśli n = 1, to a(n) = 1, czyli a + b + c = 1
Jeśli n = 2, to a(n) = 5, czyli a + 2b + 4c = 5
Jeśli n = 3, to a(n) = 13, czyli a + 3b + 9c = 13
Z układu trzech równań z trzema niewiadomymi obliczamy wartości a, b, c: a = 1, b = -2, c = 2. Podstawiając je do ogólnego wzoru otrzymujemy wzór na nasz ciąg:
a(n) = 2n(n – 1) + 1.
Znając metodę, można przystąpić do rozwiązywania zadania, tworząc najpierw wzór na pewien ciąg, a potem, dedukując, dotrzeć do celu.
Na forum pojawiło się pytanie o współrzędne w i k liczby 2009. Jak dotąd pozostaje bez odpowiedzi. Może ktoś z Państwa spróbuje jej udzielić.
A gdyby to zadanie było dla kogoś za proste, proponuję zastanowić się nad podobnym, które różni się od powyższego tylko sposobem rozmieszczania liczb w diagramie – też rzędami ukośnymi, ale „wężykiem”. Póki co dla mnie jest to twardy „pomysłowy” orzech do zgryzienia, czyli łamigłówka rasowa.
Komentarze z prawidłowymi rozwiązaniami uwalniane są wieczorem w przeddzień kolejnego wpisu. Wpisy pojawiają się co 3 dni.
Komentarze
Ok, wydawalo sie proste, a w koncu poswiecilem z pol godziny na wymyslenie wzoru. Oto jak:
W pierwszym wierszu sa liczby rozniace sie o 1,2,3,4,5,6 i.t.d. Przypomina to ciag sum kolejnych liczb naturalnych: 0,1, 3(1+2), 6(1+2+3), 10(1+2+3+4) itd. Wiec ogolnie w pierwszym wierszu sa liczby postaci (k-1)k/2+1, gdzie k to numer kolumny. Proste.
Teraz kolejne wiersze. W drugim wierszu roznice wynosza 2,3,4,5,itd. W trzecim to 3,4,5,6,. I ogolnie w w-tym wierszu roznice miedzy liczbami beda jak: w,w+1,w+2,w+3,w+4,itd.
Popatrzmy na wzor z wiersza pierwszego. Za roznice miedzy liczbami odpowiada (k-1)k/2 i pierwsza roznica to 1. W wierszu w-tym pierwsza roznica to „w”, czyli w-ta roznica wynikajaca z wzoru (k-1)k/2, czyli z (k-1+w-1)(k+w-1)/2 = (k+w-2)(k+w-1)/2.
Stad wzor na liczbe w komorce (k,w) moznaby zapisac (k+w-2)(k+w-1)/2 + costam, czyli przesuniecie w kazdym wierszu. W pierszym to przesuniecie wynosilo 1, w drugim mozna policzyc 3 – (1+2-2)(1+2-1)/2 = 2, w trzecim jest to
6 – (1+3-2)(1+3-1)/2 = 3, w czwartym:
10 – (1+4-2)(1+4-1)/2 = 4, I ogolnie w wierszu w to przesuniecie wynosi w, czyli ogolny wzor to:
(k+w-2)(k+w-1)/2 + w
No i sprawdzenie:
np. kolumna k=5 i wiersz w=3. Z obrazka czytamy 24. Ze wzoru:
(5+3-2)(5+3-1)/2 + 3 = 6×7/2 +3 = 3×7+3 = 24.
np. kolumna k=3 I wiersz w=4. Z obrazka czytamy 19. Ze wzoru
(3+4-2)(3+4-1)/2 + 4 = 5×6/2 + 4 = 5×3+4 = 19
Dla k=w=n wychodzi: (2n-2)(2n-1)/2+n = (n-1)(2n-1)+n = 2nn – 2n +1, czyli wzor z opisu.
No i dla k=1: (w-1)(w)/2+w = w(w+1)/2 czyli znowu OK!
Aha, jeszcze jedno. Na obrazku k i w powinny byc zamienione miejscami!!! (poprawione, dzięki. mp)
pozdrawiam
konglaide
No i jeszcze wspolrzedne liczby 2009. Najpierw sprawdzimy do ktorego „skosu” nalezy liczba 2009, czyli inaczej, pomiedzy ktorymi liczbami z wiersza 1-ego lezy liczba 2009. Mamy wiec nierownosc:
(k-1)k/2+1<2009, z czego wychodzi ze k lezy miedzy -62.875 a 63.375.
Najwieksza liczba naturalna spelniajaca ta nierownosc jest 63. W kazdym komorce w tym 63-tym skosie lezy liczba 1953+w, gdzie w to numer wiersza. Nasza liczba 2009 lezy wiec we wierszu 56, i kolumnie 63+1-56=8.
Sprawdzmy korzystajac z wczesniejszej wyprowadzonego wzoru, dla w=56,k=8:
(8+56-2)(8+56-1)/2+56 = 62×63/2 +56 = 1953+56 = 2009!!!
pozdrawiam
konglaide
ps. co do liczb ulozonych wezykiem, to nie jest to takie trudne. Tylko wzor bedzie zawieral troche wiecej niz +-*/.
Ostatnia czesc zagadki to „waz”.
Najpierw zauwazmy, ze wzor (k+w-2)(k+w-1)/2+w jest prawie symetryczny, gdzie prawie dotyczy ostatniego czlonu „+w”. Gdyby go zamienic na „+k” dostalibysmy tabele z liczbami odbitymi symetrycznie wzgledem przekatnej.
Natomiast wezykowe zapisywanie liczb sprawia, ze czesc skosow (defniowanych jako wszystkie komorki o takiej samej sumie k+w) jest taka jak w rozwiazaniu z „+w” (np. skos 1, 3, 5, 7, 9) lub jak w rozwiazaniu z „+k” (np. skos 2, 4, 6, 8). Majac to na uwadze, rozwiazanie wersji wezykowej staje sie banalnie proste:
(k+w-2)(k+w-1)/2 + mod(k+w,2)*w + (1-mod(k+w,2))*k
gdzie mod(n,m) to reszta z dzielenia liczby n przez m.
Mam nadzieje ze sie nie pomylilem, i przepraszam za takie poszarpane komentarze, ale zona i dzieci nie pozwalaja usiasc przy komputerze na dluzej niz 10 minut. Na szczescie przerwy bezkomputerowe da sie wykorzystac na myslenie;)
pozdrawiam
konglaide
Liczby w pierwszej kolumnie to tzw liczby trójkątne: w n-tym rzędzie mamy liczbę n(n+1)/2. Szukamy liczby w pierwszej kolumnie w przybliżeniu równej 2009, będzie to mniej więcej sqrt(2*2009)= 63,38…
Sprawdzamy: 63*64/2= 2016
Zatem liczba 2009 leży w rzędzie ukośnym kończącym się w rzędzie 63.
2016-2009=7, więc przesuwając się po skosie o 7 pól otrzymujemy pole w kolumnie 8 i rzędzie 54.
Czy wężykiem oznacza:
(01)(02)(06)(07)(15)..
(03)(05)(08)(14)..
(04)(09)(13)..
(10)(12)..
(11)..
..
Czy może:
(01)(03)(02)(08)(07)..
(05)(04)(10)(09)..
(06)(12)(11)..
(14)(13)..
(15)..
..
?
To pierwsze.
Tario, popraw się – chodzi o umiejscowienie 2009.
mp
Muszę przyznać, że to zadanie nie było dla mnie zbyt rasowe (ale skutecznie odciągnęło mnie od zadania domowego z matematyki :D)
Zadanie przeczytałem bezpośrednio po przeczytaniu problemu
(nie czytałem jak to zrobić), a wzór wyprowadziłem tak:
a(w,1)=w*(w+1)/2 (co łatwo zauważyć)
a(w,k)=a(w,1)+suma cyfr od w do w+k-2 (co już nie tak łatwo zobaczyć)
wyprowadziłem szybko wzór na sumę cyfr od n do k:
(n+k)*(k-n+1)/2
i wstawiłem w i w+k-2. Stąd:
a(w,k)=w*(w+1)/2+(2*w+k-2)*(k-1)/2.
ze wzoru mamy:
a(63,1)=2016
a(63-7,1+7)=2016-7
tak więc strzelam, że a(56, 8)=2009
Myslalem, ze to wezykiem to jest raczej:
(01)(03)(04)(10)(11)..
(02)(05)(09)(12)..
(06)(08)(13)..
(07)(14)..
(15)..
..
Poniewaz zaczynamy od jedynki, ktora w zasadzie idzie w dol. Wiem ze sie czepiam. To i tak nic nie zmienia;)
Bardzo ciekawy blog :)! Jestem pierwszy raz, trafiłam ze strony głównej Polityki.
Przyznam, że wciągnęła mnie zagadka.
dla k= 1 mamy a(w)= (w^2 + w)/2
dla k= 2 mamy a(w)= (w^2 + 3w)/2
dla k= 3 mamy a(w)= (w^2 + 5w + 2)/2
dla k= 4 mamy a(2)= (w^2 + 7w + 6)/2
itd.
Metodą różnic skończonych wyznaczamy:
1) wyraz „wolny”
0___0___2___6
__0___2___4__
____2___2____
______0______
Czyli wyraz wolny wygląda tak: k^2 – 3k + 2
2) współczynnik przy „w”
1___3___5___7
__2___2___2__
____0___0____
Czyli współczynnik przy „w”: (2k – 1)
Zatem:
a(w, k)= [w^2 + (2k – 1)w + k^2 – 3k + 2]/2
a(w, k)= [w^2 + 2kw – w + k^2 – 3k + 2]/2
a(w, k)= [w^2 + kw + kw + k^2 – w – k – 2k + 2]/2
a(w, k)= [w(w + k) + k(w + k) – (w + k) – 2k + 2]/2
a(w, k)= [(w + k – 1)(w + k) – 2k + 2]/2
Pozostaje druga część zagadki, czyli jakie współrzędne ma 2009.
a(56, 8)= 2009 ;]
Pozdrawiam!
P.
Współrzędne w i k liczby 2009 wynoszą 56 i 8, mogę podać algorytm wyznaczania tych współrzędnych dla dowolnej liczby, ale jest dość długi…
Myślę że będzie miał także zastosowanie do rozwiązania zadania z rzędami ułożonymi wężykiem
Pozdrawiam
Ziezio
Bylem leniwy i nie chciało mi się wymyślać wzoru ogólnego
1) przesuńmy każdy wiersz w prawo o ‚nr wiersza – 1’ kratek, otrzymując:
1247 11
x358 12
xx69 13
xxx1014 itd
2) w pierwszych 62 kolumnach mamy 62*63/2=1953 liczb (od 1 do 1953)
3) w 63 kolumnie liczba 2009 jest na miejscu 2009-1953= 56-tym
4) czyli w przesuniętej tabelce będzie to miejsce (56,63)
5) po „powrocie” będzie to: (56,8)
A co do drugiego pytania, to w razie gdyby też wystarczyło podać współrzędne 2009 elementu, to przesuwamy jak poprzednio, i jedyna różnica, to fakt, że nieparzyste kolumny „idą od dołu do góry”, czyli dostaniemy element 56 od dołu -> tj. 8-my od góry.
(8,63) —– a po „zsunięciu powrotnym” będzie to (8,56)
PS. Co jest symetryczne do poprzedniego, co też można łatwo uzasadnić.
Dla ciągu blogowego a(w,k) 2009 spotkamy w 56 wierszu i 8 kolumnie.
A jak w wężyku b(w,k)?
Jeżeli go poprowadzić według tarii, to przekątne , na których w+k jest parzyste, będzie b(w,k)=a(k,w), natomiast na nieparzystych b(w,k)=a(w,k). Ponieważ 2009 znajduje się na parzystej, więc w=8, k=56.
Jeżeli zaś poprowadzimy wężyk według konglaide, rzecz się będzie miała odwrotnie i wtedy w=56, k=8.
Gdzie jest 2009?
Na n-tej przekątnej znajdują się liczby między (n-1)n/2 +1, a n(n+1)/2.
Zatem 2009 leży na 63 przekątnej, bo 62*63/2 +1 = 1954, a 63*64/2 = 2016.
Na n-tej przekątnej suma w i k daje zawsze n+1, zatem nasze szukane w i k zachowują równość w+k = 64.
2009 jest 56 liczbą na swojej przekątnej, zatem w = 56. Ostatecznie otrzymujemy w = 56, k = 8.
Wydedukowac wzor można, piszac wzory dla ciagow w kolejnych wierszach:
1 wiersz – k(k-1)/2 + 1
2 wiersz – (k+1)k/2 + 2
3 wiersz – (k+2)(k+1)/2 + 3
4 wiersz – (k+3)(k+2)/2 + 4
stad wniosek:
w-ty wiersz – (k+w-1)(k+w-2)/2 + w
K i w dla 2009 można znalezc bez wzoru, ale wzor przydaje się do sprawdzenia, ze się trafilo. A trafilo się, jeśli w = 56, k = 8
a
co do liczby 2009 to wystarczy zauważyć, ze w pierwszej kolumnie znajdują się liczby trójkątne. dla 63 wiersza tej kolumny będziemy mieli do czynienia z liczbą 2016 (63*64/2). A ponieważ 2016-2009=7 to nasze szukane współrzędne to wiersz 63-7=56 i kolumna 1+7=8
pozdr
1. Wyrazy z pierwszego wiersza są wartościami pewnego wielomianu algebraicznego drugiego stopnia dla kolejnych liczb naturalnych. Znając postać tego wielomianu wyprowadzamy wyraz ogólny ciągu dwuwymiarowego:
a(x,y) = ((x+y-1)^2-(x+y-1))/2+x. Stosując ten wzów dla w i k mamy
a(w,k) = ((w+k-1)^2-(w+k-1))/2+w.
2. Znalezienie wiersza i kolumny dla zadanego roku R jest nieco bardziej złożone.
Najpierw wyrażenie na sumę p=w+k.
p=Część_całkowita((3+sqrt(8(R-1)+1))/2)
Możemy ją interpretować jako numer przekątnej, licząc od 2.
Następnie wyznaczamy s=(p*(p-1))/2+1.
Teraz już mamy:
w=R+p-s
k=s-r
W naszym przykładzie R=2009,
czyli p=64 i s=2017
a stąd w=56 i k=8.
3. Trzecia część jest oczywistym następstwem części 1.
Otóż jeśli w+k jest liczbą parzystą, to stosujemy wzór a(k,w). Natomiast dla w+k nieparzystego stosujemy a(w,k).
Pozdrawiam
Panie Marku, jak zwykle cieszę się ogromnie, że w swoim blogu, prostym językiem, odświeża Pan metody matematyczne, które zostały przeze mnie prawie zapomniane. W tym przypadku wydaje się, że zaproponowana przez Pana metoda podejścia do problemu jest nieco zbyt silnym „narzędziem”. W kolejnych „skosach” mamy przecież 1,2,3, itd… liczby, a ciąg a(n) = 1 + … + n należy przecież do absolutnych standardów.
Pomysł z wężykiem raczej nie dodaje temu zadaniu komplikacji, bo jeżeli mamy rozwiązane podstawowe zadanie dla a(w,k) to wężyk(w,k) = a(w,k) dla w+k parzystych i a(k,w) dla nieparzystych. No chyba, że zadanie polega na znalezieniu pojedynczego wzoru bez rozbicia na przypadki, wtedy jest to zupełnie inny poziom komplikacji…
Na kartce wyszło mi, że a(56,8)=2009.
Pozdrawiam.
Wiedząc, jak uzyskać wzór na dwuwymiarowy ciąg bazowy a(w,k), nietrudno stworzyć wzór na ciąg wężykowy s(w,k).
Wystarczy zauważyć, że „co drugi” skos realizuje ciąg odbity od głównej przekątnej diagramu.
Dla wszystkich pól w jednym skosie suma obu współrzędnych w+k jest taka sama. Tak więc wzór na a(w, k) otrzymamy zliczając wypełnione pola w trójkącie nad bieżącym skosem i dodając w wypełnionych pól w skosie.
W trójkącie mamy 1+2+3+….+(w+k-1) =(w+k-2)(w+k-1)/2 liczb.
Stąd mamy wzór:
a(w,k)= w+ (w+k-2)(w+k-1)/2
W moim wężyku skosy w których suma (w+k) jest parzysta są odwrócone, tzn. wypełniane zgodnie z kolejnością kolumn, a nie wierszy.
stąd, jeśli 2|w+k, to s(w,k)=k+ (w+k-2)(w+k-1)/2
jesli 2|w+k-1 to s(w,k)=w+ (w+k-2)(w+k-1)/2
Można to złożyć w jeden (dość paskudny) wzór
s(w,k)=[(-1)^(k+w)+1]k/2 +[(-1)^(k+w-1) +1]w/2 +(w+k-2)(w+k-1)/2
Witam!
Umiejscowienie dowolnej liczby w tablicy wydaje mi się dość proste.
Spójrzmy na pierwszy wiersz.
1,2,4,7,11,16,22 łatwo dostrzec że kolejny element powstaje przez dodanie kolejnej liczby naturalnej. n-ty element mozemy wyrazic wzorem n(n+1)/2 +1.
Poszukajmy, na której kolejno „przekątnej” leży 2009, będzie to taka liczba że n(n+1)/2+1 <=2009 <(n+1)(n+2)/2+1.
Będzie to 62 druga przekątna, dla której element w pierwszym wierszu wynosi 62*63/2+1=1953. Teraz już tylko musimy zejść na dół ( i w lewo) o 56 (2009-1953) kroków. Czyli szukany wiersz to będzie 57 a kolumna 6.
Pozdrawiam
Piotrek
2009 ma współrzędne: w=56, k=8
Znaleźć wiersz i kolumnę dla dowolnej liczby jest dość prosto.
Liczby w pierwszej kolumnie są liczbami trójkątnymi. W n-tym
wierszu znajduje się liczba n(n+1)/2. Rozwiązujemy równanie kwadratowe n(n+1)/2>=2009. Znajdujemy n=63 (n jest liczbą całkowitą). Odpowiadająca liczba trójkątna to 63*64/2=2016. 2016-2009=7. Teraz dodajemy do kolumn i odejmujemy od wierszy 7 (bo przesuwamy się w prawą stronę tabeli) i otrzymujemy w=56, k=8. Jedyne co mi się kojarzy z wężykiem to Jasiu z Kabaretu Dudek podkreślający wężykiem w kajeciku złote myśli Pana Majstra i powrót do domu po imprezie, ale nie wiem czy o te wężyki chodziło w Pana pytaniu.
Doprecyzowałem wężyki w ujawnionym komentarzu Tarii.
mp
Na szczęście zdążyłem z rozwiązaniem 🙂
f(w,k)=(W+K-1)(W+K)/2 – (K-1)
pomyślę jeszcze nad 2009 jeśli zdążę! 🙂
wychodzac od wzoru na pierwsza kolumne w(w+1)/2
sprobujmy wyliczyc najporawdopodobniejszy numer wiersza w okolicach wartosci 2009
sqrt(2009*2)=63,38…
a wiec sprawdzamy dla kolumny 1 i wiersza 63 mamy:
63(63+1)/2=2016
2009 jest 2016-2009=7 kolumn dalej
K=1+7=8 i
7 kolumn wyżej
W=63-7=56
czyli f(W,K)=f(56,8)=(W+K-1)(W+K)/2 – (K-1) = 2009
Aha jeśli chodzi o dojście do wzoru:
wzor na szereg arytmetyczny a raczej na sumę jego to suma pierwszego i ostatniego wyrazu pomnożona przezpolowę liczby wyrazów, na przykład dla koliumny pierwszej (numer wiersza + 1 wuraz)* numer iwersza przez 2
tzn (w+1)w/2 ot i wsio, teraz nalezy zauwazyc ze nastepna kolumna o „oczko” wyzej (poprzedni wiersz) ma ten sam wynik pomniejszony o jeden czyli dla tego samego wiersza ale nastepnej kolumny trzeba wyliczyc wartosc z nastepnego wiersza i pomniejszyc o jeden:
(w+1)(w+2)/2 – 1
jak widac kolejne kolumny mozna zakodowac tym dodatkiem do wzoru na pierwsza kolumne w(w+1)/w z tym, że do każdego w należy dodać K-1 i odjąć tą wartość od wyniku:
(W+1+K-1)(W+K-1) – (K-1)
co daje funkcję:
f(W,K)=(W+K)(W+K-1) – (K-1)
Wężyk:
(w+k-1)(w+k)/2 – (k-1)*sgn[(w+k) mod 2] – (w-1)*sgn[(w+k+1) mod 2]
gdzie:
x mod y = funkcja modulo daje reszte z dzielenia, w tym wypadku sprawdza czy to parzyste czy nieparzyste,
funkcja sgn(x) = signum daje w wyniku 1 dla x>0, 0 dla x=0, oraz -1 dla x<0
wykorzystuje tu do odejmowania członu albo (k-1) albo (w-1) odpowiednio dla sumy w+k nieparzystej lub parzystej
zapedzilem sie funkcje signum mozna pominac 🙂 zostawic tylko mnozenie czlonow przez czlon modulo, czyli:
wężyk:
f(w,k)=(w+k-1)(w+k)/2 – (k-1)*[(w+k) mod 2] – (w-1)*[(w+k+1) mod 2]
Do konglaide:
„Myslalem, ze to wezykiem to jest raczej:
(01)(03)(04)(10)(11)..
(02)(05)(09)(12)..
(06)(08)(13)..
(07)(14)..
(15)..
”
wężyk może ‚chodzić’ czy też ‚pełzać’ w tę lub w drugą stronę, wystarczy w moim wzorze zmienić w członach modulo kolumny z wierszami i będzie chodził tak, jak Ty chcesz.
A ja nie zdążyłem przed opublikowaniem odpowiedzi, ale mam inne podejście do rozwiązania f(w,k) – troszkę geometryczne.
Wartość elementu (w,k) jest równa wartości pola „pseudo-trójkąta” jaki ogranicza. Zauważmy że element (w,k) wyznacza prostokąt (w,k) i dwa „trójkąty” (z prawej strony i z dołu. Pole powierzchni tych figur to wartość elementu (w,k)
Pole prostokąta to w*k
Pole trójkąta po prawej to (w-1)(w-2)/2
Pole trójkąta z dołu to k(k-1)/2
a więc f(w,k) = wk+(w-1)(w-2)/2+k(k-1)/2
Do znalezienia elementu o wartości 2009 wykorzystałem to że wartość komórki w pierwszej kolumnie to połowa z (pola kwadratu o boku k + liczba elementów jego przekątnej).
f(1,k) = 1/2 *(k*k + k)
biorąc kwadrat złożony z dwóch „trójkątów o polu=2009 możemy oszacować jego bok
k =(int) sqrt(2*2009)
k = 63
wartość f(1,63) wynosi 2016 więc musimy odjąć 7 komórek
dla tego też:
k = 1+7 = 8
w = 63-7 = 56
Tomashu, „geometryczny” pomysł oryginalny, ale wzór źle wyprowadzony.
mp
Tomashu możesz mi to bardzieł łopatologicznie wytłumaczyć? Staram się zrozumieć te pseudo trójkąty ale nie widze ich 🙁 Daj może jakiś przykład konkretny z liczbami, polami itp, bo ciężko mi jest zrozumieć twój tok rozumowania.
Olśniło mnie,
moim zdaniem:
pole prostokąta to w*k zaś tych trójkątów to:
prawy: (w-1)w/2
dolny: (k-2)(k-1)/2
f(w,k)=w*k+(w-1)w/2 + (k-2)(k-1)/2
Marku, Wiązie oczywiście pomyliłem wiersze z kolumnami 😉 (liczyłem to na x,y i źle przepisałem). Na swoje usprawiedliwienie mogę napisać ze mój wzór opisuje analogiczny układ tylko 2 jest pod 1 😉
http://www.fotosik.pl/pokaz_obrazek/f0506a05799f43f0.html a tu przykład 😉
Dla tego typu zadań mamy znakomitą „bezmyślną” metodę:
Ponieważ mamy do czynienia z dwoma wymiarami więc ogólny wzór będzie wielomianem drugiego stopnia zmiennych w i k.
f(w,k)=a*w^2+b*w*k+c*k^2+d*w+e*k+f
Teraz szukamy współczynników a,b,c,d,e,f.
Robimy układ równań:
f(1,1)=a*1^2+b*1*1+………
f(1,2)=…
f(2,1)=…
itd, ma być sześć równań bo sześć współczynników.
Rozwiązujemy układ i mamy a,b,c,d,e,f.
metoda odbiera nam przyjemność myślenia ale za to jest skuteczna nawet w o wiele trudniejszych przypadkach, np. w 3 wymiarach 🙂