Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - AlexIljin

Страницы: [1] 2
1
Общий раздел / Re:Задачка архитекторная.
« : Апрель 12, 2011, 06:46:19 pm »
На этом форуме плохо видно пришедшие личные сообщения. valexey, я вам уже несколько дней как написал.

2
Общий раздел / Re:Задачка архитекторная.
« : Апрель 10, 2011, 04:41:20 pm »
Пока занят сделать описалово
Бог с ним, с описанием. Исходников было бы достаточно. Они уже опубликованы или нет?

3
Общий раздел / Re:Задачка архитекторная.
« : Апрель 01, 2011, 06:40:19 am »
Кто-то обещал, что будет короче, чем на хаскеле? :) Ну а статическая типизация вэтой задаче пока себя никак не показала. Судя по тому, что на питон переписалось без проблем.
Я думал, что статическая типизация показала бы себя при переписывании С Питона, а не НА него. Или я чего-то не догнал?

Кроме того, где решение Ильи Ермакова? Массы жаждут! (В моём лице.)

4
Общий раздел / Re:Задачка архитекторная.
« : Март 29, 2011, 11:45:49 am »
Если в программе vlad'а удалить функцию test (и её вызов), то вот ещё -38 строк...
Это я уже сделал и учёл в подсчётах.

5
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 08:23:58 pm »
Влад, в личные сообщения гляньте.

6
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 08:11:29 pm »
Интересная попытка, но увы! Слишком мало расчётов, пролетает мгновенно, надо что-то покруче...
Да, и 26*9 = 234 всё-таки...
Это я не для расчётов, а для глубины рекурсии. Можно сделать поиск с заменой, исправив "+1" на "*2/2*2/2*2/2*2/2*2/2..." Тогда и рекурсия будет, и расчётов сколько угодно. Впрочем, при моём максимальном числе 255 символов в ячейке всё равно влёт считает.

Почему-то в голове сидело, что в английском алфавите 27 букв. В результате составления таблицы исправил на 26, а результат умножения забыл обновить.

7
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 08:03:58 pm »
Долгожданный С++ вариант :) 530 строк - самый жрный вариант, как я понимаю.

Удалил пустые строки, удалил namespace Test, в объявлении функций тип результата поставил на одну строку с именем функции, и осталось 383 строки. Практически совпадает с моим вариантом на XDS Oberon-2 (380 строк).

Не совсем понятно, правда, почему exe-файл 388Кб. Это с отладочной информацией, наверное?

8
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 07:14:52 pm »
По поводу большой таблицы и вычислений - представьте себе какую-нибудь инкрементальную колоночку в табличке с миллионами строк. Т.е. каждая ячейка ссылается на предыдущую + 1... Хм, только в текущем языке формул нет относительного синтаксиса.

Представил и без относительного синтаксиса. Что дальше? В смысле, я не понял, на что намёк?
Если это вы про рекурсивное вычисление, так ведь я решал задачу первого этапа. А про второй этап - подумал и прикинул необходимые изменения: исправить тип поля ExpressionCell.marked и добавить цикл.
Как и было в задании. : )
При таблице 26*9 максимальная глубина рекурсии = 243, а это чуть более 16Кб стэка для моего кода.

Кстати, если кому для тестов надо, вот таблица:9    26
=B1+1   =C1+1   =D1+1   =E1+1   =F1+1   =G1+1   =H1+1   =I1+1   =J1+1   =K1+1   =L1+1   =M1+1   =N1+1   =O1+1   =P1+1   =Q1+1   =R1+1   =S1+1   =T1+1   =U1+1   =V1+1   =W1+1   =X1+1   =Y1+1   =Z1+1   =A2+1
=B2+1    =C2+1   =D2+1   =E2+1   =F2+1   =G2+1   =H2+1   =I2+1   =J2+1   =K2+1   =L2+1   =M2+1   =N2+1   =O2+1   =P2+1   =Q2+1   =R2+1   =S2+1   =T2+1   =U2+1   =V2+1   =W2+1   =X2+1   =Y2+1   =Z2+1   =A3+1
=B3+1    =C3+1   =D3+1   =E3+1   =F3+1   =G3+1   =H3+1   =I3+1   =J3+1   =K3+1   =L3+1   =M3+1   =N3+1   =O3+1   =P3+1   =Q3+1   =R3+1   =S3+1   =T3+1   =U3+1   =V3+1   =W3+1   =X3+1   =Y3+1   =Z3+1   =A4+1
=B4+1    =C4+1   =D4+1   =E4+1   =F4+1   =G4+1   =H4+1   =I4+1   =J4+1   =K4+1   =L4+1   =M4+1   =N4+1   =O4+1   =P4+1   =Q4+1   =R4+1   =S4+1   =T4+1   =U4+1   =V4+1   =W4+1   =X4+1   =Y4+1   =Z4+1   =A5+1
=B5+1    =C5+1   =D5+1   =E5+1   =F5+1   =G5+1   =H5+1   =I5+1   =J5+1   =K5+1   =L5+1   =M5+1   =N5+1   =O5+1   =P5+1   =Q5+1   =R5+1   =S5+1   =T5+1   =U5+1   =V5+1   =W5+1   =X5+1   =Y5+1   =Z5+1   =A6+1
=B6+1    =C6+1   =D6+1   =E6+1   =F6+1   =G6+1   =H6+1   =I6+1   =J6+1   =K6+1   =L6+1   =M6+1   =N6+1   =O6+1   =P6+1   =Q6+1   =R6+1   =S6+1   =T6+1   =U6+1   =V6+1   =W6+1   =X6+1   =Y6+1   =Z6+1   =A7+1
=B7+1    =C7+1   =D7+1   =E7+1   =F7+1   =G7+1   =H7+1   =I7+1   =J7+1   =K7+1   =L7+1   =M7+1   =N7+1   =O7+1   =P7+1   =Q7+1   =R7+1   =S7+1   =T7+1   =U7+1   =V7+1   =W7+1   =X7+1   =Y7+1   =Z7+1   =A8+1
=B8+1    =C8+1   =D8+1   =E8+1   =F8+1   =G8+1   =H8+1   =I8+1   =J8+1   =K8+1   =L8+1   =M8+1   =N8+1   =O8+1   =P8+1   =Q8+1   =R8+1   =S8+1   =T8+1   =U8+1   =V8+1   =W8+1   =X8+1   =Y8+1   =Z8+1   =A9+1
=B9+1    =C9+1   =D9+1   =E9+1   =F9+1   =G9+1   =H9+1   =I9+1   =J9+1   =K9+1   =L9+1   =M9+1   =N9+1   =O9+1   =P9+1   =Q9+1   =R9+1   =S9+1   =T9+1   =U9+1   =V9+1   =W9+1   =X9+1   =Y9+1   =Z9+1   =1

9
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 05:48:48 pm »
Александр, а слабо переделать программу на разумно-модульный вид? Собственно, этого автор задачи и ожидал в качестве хорошего решения -- декомпозиция программы, удобная для развития в будущем.
Слабо, конечно. Я считаю, что процедурная декомпозиция вполне адекватна задаче. Все точки расширения вполне обозримы. Добавить строковые операции? Ищем errStringOp, добавляем нужную константу для operation. Огромные таблицы? Правим загрузку и дереференс ячейки. Избавиться от рекурсии в интерпретации выражений? Поле marked из BOOLEAN превращаем в INTEGER.
Чего тут в модулях прятать-то? Ввод и вывод и так нормально спрятаны в In и Out.
Нет, ну можно, конечно, разбить, чтобы подчеркнуть независимость ввода от расчёта и расчёта от вывода, но надо ли?
Ещё можно уменьшить требования к памяти, вычисляя простые формулы сразу при загрузке, как это сделано для целых чисел и строк. Поможет ли в этом разбиение на модули? Вряд ли.

В общем, на мой взгляд, дополнительные модули не нужны, по крайней мере пока не перевалили за 1000 строк. Посмотрим, что за учебный пример будет у Ильи. Надеюсь, он в моё решение не подглядывал : ))

10
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 03:56:20 pm »
Вот если расширить язык этой таблицы, введя возможность вычисления формул -- было бы прикольно...

Хотите сказать, что в вашем решении формулы не вычисляются?
Это заставляет посмотреть на приведённые метрики с новой стороны ; )))

11
Общий раздел / Re:Задачка архитекторная.
« : Март 28, 2011, 11:55:21 am »
Было бы любопытно сделать такую таблицу, расчёт которой занял бы ощутимое время -- интересно было бы сравнить разные варианты решений на скорость вычислений.
Но таблица размером 26*9 не очень способствует таким замерам. Вот если расширить язык этой таблицы, введя возможность вычисления формул -- было бы прикольно...

Длину формулы, вроде, не ограничивали... : ))

12
Общий раздел / Re:Задачка архитекторная.
« : Март 27, 2011, 08:03:40 pm »
Простейший вариант:
int'to'str :: Int -> String
int'to'str n = show n
Но это не по-джедайски.
Да, там тоже есть, я только что дочитал:q)string 18873
"18873"
Так что вот:
import Char

int'to'str :: Int -> String
int'to'str 0 = ""
int'to'str n = int'to'str (n `div` 10) ++ [chr (n `mod` 10 + ord '0')]
Ага, рекурсия. Точно, что это я сразу не подумал?
Спасибо.

13
Общий раздел / Re:Задачка архитекторная.
« : Март 27, 2011, 07:32:46 pm »
Я не знаток этих брейнфаков, так что я пас... ;D
А можно аналог на Хаскеле?

14
Общий раздел / Re:Задачка архитекторная.
« : Март 27, 2011, 07:14:12 pm »
Как я понял, Q -- более читабельная обёртка над K, используемая для запросов к базе данных KDB...
Моя первая программа на языке q: преобразует положительное целое число в последовательность символов (запись числа).
q)x:18873; L:"012345679"; res:""; while[x>0; res:res,L[x mod 10]; x:x div 10]; reverse res
"18873"
Не знаю, как векторизовать без while : (
Подскажите, как улучшить решение!

15
Общий раздел / Re:Задачка архитекторная.
« : Март 27, 2011, 12:54:23 pm »
Самое ТруЪ-решение Задачи-К -- это решение на языке К от самого Трурля:
А что, он - первоначальный автор задания?
Ещё вопрос, в каких отношениях находятся языки K и Q?

Страницы: [1] 2