Wpis z mikrobloga

#zagadkimatematyczne #zagadki #myslecmisieniechce #programowanie #wyzwanie

Mamy zeszyt w kratkę, w środkową kratkę (o współrzędnych 0,0) wpisujemy liczbę 0. Potem idziemy spiralnie - w kratkę o współrzędnych (0, -1) wpisujemy 1, w kratkę o współrzędnych ( 1, -1) wpisujemy 2, w kratkę o współrzędnych (1, 0) wpisujemy 3 i tak dalej.

Współrzędne kratek rosną w prawo (x) i do dołu (y).

Przykład dla pierwszych 9 liczb:

8 1 2

7 0 3

6 5 4

Trzeba wyprowadzić funkcję dwuargumentowa F(x,y) zwracającą dla kratki o współrzędnych (x,y) liczbę, którą trzeba do niej wpisać, oraz funkcję G(N) odwrotną do niej (zwracającą dla liczby N współrzędne kratki, w których wpiszemy tą liczbę).

Jak na razie wyprowadziłem x(N) i wiem, jak wyprowadzić y(N), tylko to dużo roboty :). Z tego będę miał G(N). Jak ktoś zrobi - stawiam piwo :) Potrzebne mi to do hobbystycznego projektu.
  • 39
  • Odpowiedz
@noisy: liczę sobie teraz maksimum po wartości bezwzględnej koordynatów, które zwraca mi n (stopień kwadratu)

n = max(abs(x), abs(y))
  • Odpowiedz
@noisy: teraz sprawdzam po której stronie od zera znajduje się nasz punkt, gdyż to determinuje jak należy liczyć wartość komórki..
  • Odpowiedz
@noisy:

gdy y ma maksymalną wartość bezwzględną, a y jest minusowe, to liczba ta znajduje się na północnej ściance.. (nazwijmy ją ścianą pierwszą)

gdy x ma maksymalną wartość bezwzględną, a x jest plusowe, to liczba ta znajduje się na wschodniej ściance.. (ściana nr 2, to nasz
  • Odpowiedz
@noisy: następną kwestią będzie wyliczenie, którą w kolejności największą liczbą na ściance jest nasza liczba..

34 jest piąta na drugiej ściance... a wyliczyć to można ze wzoru:
  • Odpowiedz