Dr. K. L. Metlov (dr_klm) wrote,
Dr. K. L. Metlov
dr_klm

вот программку написал ;-))

ФАНФАРЫ !!! ;-)))

Моя первая программа на языке J:
maxidx=: [: (i. >./) [: {."1@+. ]
minidx=: [: (i. <./) [: {."1@+. ]
substrmin=: - minidx { ]
angles =: [: {:"1 [: *. (maxidx { ]) * [: + ]
]leftofline=:13 : '{: +. (* +)/ }. (- {.) y.'
]iteration =: 13 : '(1 ,(0>(3 leftofline\ y.)), 1)  # y.'
]hull =: 13 : 'iteration ^:_ (, {.) (_ (minidx y.)}
(angles substrmin y.)) (\:~) (y.)'
Работает так (внутри интерактивной сессии):
   ]points=: 1j_6 5j_4 7j_2 4j_2 10j_1 _2j0 9j0 5j1 7j2 2j4 8j5
1j_6 5j_4 7j_2 4j_2 10j_1 _2 9 5j1 7j2 2j4 8j5
   hull points
_2 1j_6 5j_4 10j_1 8j5 2j4 _2
Строчки, начинающиеся с трех пробелов -- то, что вводится, на следующей строке результат. Тоесть тут две команды. Первая определяет исходные данные, вторая собственно вызывает мою программу.

Спрашивается в задачнике Рыбкина -- и что-же эта программа делает ? ;-)

Сама программа еще сыровата (но уже работает), еще буду доводить и упрощать... Ее еще немного можно подсократить, просто поздно сегодня, пора домой...
Tags: j
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 25 comments