Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Игры разума
Перезагрузить страницу Miniolimp порядковый номер букв и чисел
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
michael michael вне форума
Member
 
Сообщений: 969
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.08.2003
По умолчанию 01.02.2006, 19:01

Вот заодно и на C вариант:
Код:
#include <stdio.h>
#include <memory.h>

void main()
{
    int n, h, X[502], remainders[10000], j, k, r, i = 0;
    FILE *in = fopen("hf.in", "r"), *out = fopen("hf.out", "w");

    memset(remainders, 0, sizeof(int)*10000);
    fscanf(in, "%i %in", &n, &h);
    while ((X[i] = fgetc(in)) != EOF) X[i++] -= 'a';

    for (i = 0; i < n; i++) for (j = i; j < n; j++)
    {
        r = 0;
        for (k = i; k <= j; k++) r = (r*26 + X[k]) % h;
        ++remainders[r];
    }

    for (i = 0; i < h-1; i++) fprintf(out, "%i ", remainders[i]);
    fprintf(out, "%i", remainders[i]);

    fclose(in);
    fclose(out);
}
Ответить с цитированием
  (#17 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 01.02.2006, 19:10

Это уже не так интересно.
Все три варианта (паскаль, питон, си) - один в один , за исключением того, что в питоне все структуры данных динамические и следовательно нет ограничений на n и h без дополнительных усилий со стороны программиста, с другой стороны, си и паскаль сделают питон по скорости выполнения программы.
Интересно было бы посмотреть на реализацию этой программы на функциональных, логических, CLP и векторных языках.
Ответить с цитированием
  (#18 (permalink)) Старый
michael michael вне форума
Member
 
Сообщений: 969
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.08.2003
По умолчанию 01.02.2006, 19:16

gromozeka, вот эта строка
Код:
for i in result: print i,
насколько я понял, выводит все числа из ассоциативного массива result, где содержатся остатки. А если количество остатков для некоторого i равно 0? Ведь это i не будет включено в result? Как же тогда оно выводится?
Ответить с цитированием
  (#19 (permalink)) Старый
michael michael вне форума
Member
 
Сообщений: 969
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.08.2003
По умолчанию 01.02.2006, 19:22

Всё, понял. result - обычный массив (или как там в Питоне - список?)...
Ответить с цитированием
  (#20 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 01.02.2006, 19:22

Эта строка создает массив из нулей, длиной h символов:
Код:
result=[0]*h
Примерно то же, что:

Код:
for i := 0 to h-1 do remainders[i] := 0;
Код:
memset(remainders, 0, sizeof(int)*10000);
А дальше, инкременты, так же как у Вас.
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 01.02.2006, 19:25

Цитата:
Originally posted by michael
[b]Всё, понял. result - обычный массив (или как там в Питоне - список?)...
Офигительная структура. Поддерживает все операции массивов, очередей, стеков, списков и еще унификацию.
Думать не хочу, как это реализовано.
Ответить с цитированием
  (#22 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 01.02.2006, 19:26

фигня какая-то... опять сообщение два раза запостилось...
Ответить с цитированием
  (#23 (permalink)) Старый
kost kost вне форума
Member
 
Сообщений: 1,081
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2004
По умолчанию 01.02.2006, 20:06

gromozeka
То, что ваша прога работает с большими числами - очень замечательно. А во временнЫе пределы вписывается нормально или подтормаживает?

Когда появятся тесты вывешу и все проверим. А так... Хотя думаю, что во время вложится. Все же, никто там не обрезал время работы. Просто посмотрели, что в 2 секунды решение паскаля влазит и все тут...
Ответить с цитированием
  (#24 (permalink)) Старый
Trurl Trurl вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.08.2004
По умолчанию 16.05.2006, 10:41

Код:
a: 0:"hf.in" 
n: (. a@0)@1 
s: (-)._ic(a@1;"a")
r: @[n#0; ,/{(y+x*26)!n}'(!#s)_:s; 1+]
` 0:,/ ($:'r),:" "
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
kost kost вне форума
Member
 
Сообщений: 1,081
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2004
По умолчанию 16.05.2006, 10:50

Цитата:
Originally posted by Trurl
[b]
Код:
a: 0:"hf.in" 
n: (. a@0)@1 
s: (-)._ic(a@1;"a")
r: @[n#0; ,/{(y+x*26)!n}'(!#s)_:s; 1+]
` 0:,/ ($:'r),:" "
И, простите, чё это?
Ответить с цитированием
  (#26 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 16.05.2006, 18:17

Цитата:
Originally posted by kost+-->
Цитата:
<!--QuoteBegin-Trurl
Цитата:
[b]
Код:
a: 0:"hf.in" 
n: (. a@0)@1 
s: (-)._ic(a@1;"a")
r: @[n#0; ,/{(y+x*26)!n}'(!#s)_:s; 1+]
` 0:,/ ($:'r),:" "
И, простите, чё это?
J ?


импортирован с progz.ru
Ответить с цитированием
  (#27 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 16.05.2006, 19:11

Это не J, это K, тоже диалект АПЛа, так что Вы были близки.

Вообще с АПЛщиками тягаться в лаконичности кода - крайне неблагодарное занятие.
Во первых в языке огромное колличество примитивов обозначаемым одним (в АПЛ) или одним/двумя символами (в J/K), которые в других языках даже в библиотеках не всегда присутствуют, во вторых есть много способов комбинировать функции (опять же несколькими символами) позволяющих лепить из функций все что душе угодно, в третьих, практически все функции работают сразу с целым массивом (или другой структурой) целиком, не перебирая ее поэлементно, что позволяет практически всегда обойтись без циклов.
Ответить с цитированием
  (#28 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 16.05.2006, 20:51

Цитата:
Вообще с АПЛщиками тягаться в лаконичности кода - крайне неблагодарное занятие.
Не путать лаконичность с читабельностью!

И вообще, мне инересно, на сколько предпологаемая векторность J, K (и др. АПЛ) реальна и ощутима? Ведь принципиальная возможность параллельной обработки и др. вкусностей о которой говорят умные дяди и реально существующие компы и интерпретаторы (насколько я понимаю - это всё интерпретируемые языки) совсем разные вещи.
Существуют ли машины, которые работают в реально параллельном режиме под АПЛподобными языками?

Извиняюсь за оффтоп...


импортирован с progz.ru
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно разобрать программу для перевода списка арабских чисел в список римских чисел. RuslanTM Prolog 2 18.12.2011 17:04
Порядковый номер снова не найден) 6orotblpb Любые вопросы от новичков 9 30.06.2011 15:42
порядковый номер 650 не найден в библиотеке dll iertutil.dll dee Любые вопросы от новичков 32 24.06.2011 12:16
Из множества целых чисел 1..100 выделить множество чисел, являющихся, в свою очере Tormiz61 Pascal 4 18.06.2011 15:07
Найти порядковый номер ого из элементов последовательности... razor052 Pascal 1 27.10.2010 10:43
Функция которая считала среднее значение чисел и количество букв СеРенЯ Lisp 1 12.10.2009 23:38
Минимальный элемент и его порядковый номер OksanaIST Prolog 2 16.12.2007 10:59
Как отключить строку, на которой пишется номер строки и номер символа Audio2005 Delphi 6 11.07.2007 18:42
Miniolimp как настроить написанную программу kost Игры разума 11 02.02.2006 01:27
Серийный номер и номер авторизации WorldWideWeb C++ Builder 1 29.08.2005 14:17
Как определять порядковый номер предыдущей недели Евгения DHTML, JavaScript, VBScript 0 04.07.2005 16:33
Номер колонки и номер строки в QTextEdit krutoj_pablo Trolltech Qt 11 09.02.2005 20:24



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов