Forth http://fforum.winglion.ru/ |
|
o! задачка! преобразование числа в римскую цифру. http://fforum.winglion.ru/viewtopic.php?f=19&t=2526 |
Страница 1 из 1 |
Автор: | WingLion [ Вт мар 16, 2010 21:55 ] |
Заголовок сообщения: | o! задачка! преобразование числа в римскую цифру. |
Написать слово, которое из числа на стеке печатает его "римской цифрой". Ограничение - число не более 65536 (16 разрядов). Где искать правила преобразования - сам не знаю. |
Автор: | chess [ Вт мар 16, 2010 22:05 ] |
Заголовок сообщения: | |
WingLion писал(а): Ограничение - число не более 65536 (16 разрядов).
Где искать правила преобразования - сам не знаю. I - 1 V - 5 X - 10 L - 50 C - 100 D - 500 M = 1000 Сначала пишутся тысячи и сотни, а затем - десятки и единицы. Есть и некоторые правила.Если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая - перед большей, то меньшая вычитается из большей (принцип вычитания). Одна черта сверху означает умножение всего числа на 1000. Но в типографи черта сверху применяется редко из-за сложности набора. Примеры Число 26 = XXVI Число 1987 = MCMLXXXVII Чтобы лучше запомнить буквы в римских цифрах в русском языке существует правило мнемоники, которое звучит так: Мы Дарим Сочные Лимоны, Хватит Всем Их. |
Автор: | WingLion [ Вт мар 16, 2010 22:14 ] |
Заголовок сообщения: | |
интел всех переплюнула, пентиум 2010 года сделала в середине 90-х годов и назвала без ложной скромности Pentium-MMX |
Автор: | forther [ Вт мар 16, 2010 22:52 ] |
Заголовок сообщения: | |
жалко, что в интернете ответ отыскивается за пару кликов. |
Автор: | in4 [ Ср мар 17, 2010 01:42 ] |
Заголовок сообщения: | |
доп. информация: Броуди, Способ мышления - Форт, глава 4. Заодно и поучиться можно... |
Автор: | Jelsay [ Ср мар 17, 2010 07:20 ] |
Заголовок сообщения: | |
: 1 ." I" ; : 2 ." II" ; : 3 ." III" ; : 4 ." IV" ; : 5 ." V" ; ... .. ... : 65536 .".......... надо беречь ресурсы мозга за счёт коипьютерных "мозгов". |
Автор: | WingLion [ Ср мар 17, 2010 07:59 ] |
Заголовок сообщения: | |
a с неоднозначностью что делать? 90=XC или 90=LXL ? 49=IL или 49=XLIX ? и т.д. и т.п. |
Автор: | chess [ Ср мар 17, 2010 08:44 ] |
Заголовок сообщения: | |
WingLion писал(а): a с неоднозначностью что делать?
90=XC или 90=LXL ? 49=IL или 49=XLIX ? и т.д. и т.п. Выбирайте более короткий вариант. |
Автор: | mOleg [ Ср мар 17, 2010 10:34 ] |
Заголовок сообщения: | |
провакационное решение (детям не показывать!) <pre> \ получаем количество циферек (вот до чего доводит нежелание создавать нормальную позиционную систему!) : ?# ( u n char --> u ) >L BEGIN DDUP 1 - > WHILE TUCK - SWAP L@ KEEP REPEAT L> DDROP ; \ ленивый вариант!!! : >rome ( u --> ) <| 1000 [CHAR] M ?# 500 [CHAR] D ?# 100 [CHAR] C ?# 50 [CHAR] L ?# 10 [CHAR] X ?# 5 [CHAR] V ?# 1 [CHAR] I ?# DROP |> TYPE ; </pre> вообще, интересно, что Римляне догадались систему сделать позиционной (мое решение нет), только подошли к решению своеобразно. Но тут у меня есть подозрение, что так они боролись с "пузырями", то есть с банкирами. Попробуй написать милиард в римской системе!.. Вот пользовалсь бы США римской системой - не пришлось бы выдумывать "зеленые ростки" |
Автор: | chess [ Ср мар 17, 2010 14:46 ] |
Заголовок сообщения: | |
Печатает "правильные" римские числа, но так как символа подчеркивания сверху я сделать не могу, то начиная с числа 4000 "правильности" не достичь. Код: 0 VALUE SMD : SYM. \ SM -- S" IVXLCDM" DROP SMD + + C@ EMIT ; : DIG. \ DIG SM -- TO SMD 5 /MOD OVER 4 = IF 0 SYM. IF 2 SYM. ELSE 1 SYM. THEN DROP ELSE IF 1 SYM. THEN 0 ?DO 0 SYM. LOOP THEN ; : ROME. \ N -- 1000 /MOD 6 DIG. 100 /MOD 4 DIG. 10 /MOD 2 DIG. 0 DIG. ; 3949 ROME. log Код: MMMCMXLIX
Ok |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |