Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

#1 01-06-10 09:02:54

Luca
Участник
Здесь с 03-09-09
Сообщений: 1,545

простенькая программка с циклами на питоне не работает

Ладно, отвлеку я вас шо ле...
Скинул мне адын знакомый прикольное задание. Палить не буду, а то мало ли что tongue Задание по программированию, институтское кажется. Я попытался его на питончике решить... и решил tongue Вот программа:

import sys
a = [0]

def aaa():
  i = 1
  if len(a) > 1100:
    print a(999)
    sys.exit()
  while i <= len(a):
    a.append(i)
    print a
    i = i + 1
  aaa()
aaa()

Программа вроде работает, но... biggrin В оьщем, после 200-го цикла зависает и ещё через 2 минуты вываливается с Memory Error crazy
Внимание вопрос: что в чёрном ящике почему она не работает?

Вопрос озвучен Mandriva-oid в комментах и перенесен мной на форум.

Вне форума

#2 01-06-10 09:43:51

msAVA
Участник
Здесь с 04-10-09
Сообщений: 1,817

Re: простенькая программка с циклами на питоне не работает

Само задание:

Имеется некий ряд чисел типа 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5 и.т.д Нужно вычислить какой значение у элемента находящегося по заданному индексу (нумерация элементов начинается с 1)?

Предложенные варианты решения:

#377.  MOP3E пишет:
Sub Probe001()
Dim i, j, x As Integer

i = 0
j = 1
x = 0

While i < 1000
    If (i + j) < 1000 Then
        i = i + j
        j = j + 1
    Else
        i = i + 1
        x = x + 1
    End If
Wend

MsgBox x

End Sub
#384.  ont пишет:
def sum( i ):
    return (1 + i) * i / 2

idx = 1000

i = 1
while sum( i ) < idx:
    i += 1

print 'answer:', idx - sum( i - 1 )

восстановлю справедливость и добавлю код третьего участника.
математическую подоплёку вопроса выложу ниже smile
sincerely, Майор Очевидность

#393.  ikkunan salvataja пишет:

Ну спецы.

a=trunk(sqrt(2000))
if a^2+a>2000 then a=a-1
b=(2000-a^2-a)/2
say b

Смысл жизни не 42, смысл жизни 69.
Моё.

Вне форума

#3 01-06-10 09:45:01

msAVA
Участник
Здесь с 04-10-09
Сообщений: 1,817

Re: простенькая программка с циклами на питоне не работает

Внимание, вопрос: "Что неправильно в прогах?". Почему эти решения не будут засчитаны преподом?


Смысл жизни не 42, смысл жизни 69.
Моё.

Вне форума

#4 01-06-10 09:51:14

msAVA
Участник
Здесь с 04-10-09
Сообщений: 1,817

Re: простенькая программка с циклами на питоне не работает

1) Всё же номер элемента следует запрашивать. Это требуется и условием задачи, и общими нормами программирования. Программа должна решать наиболее общий круг задач данного класса.

2) Как вы, собственно, собираетесь доказать, что прога решает поставленную задачу правильно? Я даже не про комментарии в проге, а про сам алгоритм.

P.S. Лобовым методом задача тоже решается элементарно, быстро и без всяких рекурсий. Никаких монстров вроде Питона, Си или ВБейсиков не нужно, задачи такого уровня решаются на bc.


Смысл жизни не 42, смысл жизни 69.
Моё.

Вне форума

#5 01-06-10 10:26:13

SemyonKozakov
Журнашлюшка :)
Откуда: Саратов
Здесь с 28-11-09
Сообщений: 4,394
Сайт

Re: простенькая программка с циклами на питоне не работает

Тема закрыта. Причина - я 1000 раз объяснил, что просто сделал вброс  smile На форуме тут обсуждать нечего.


nolinux.w2c.ru - море баттхерта и деаонимизации

Вне форума

#6 01-06-10 15:41:12

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371

Re: простенькая программка с циклами на питоне не работает

Mandriva-oid, звиняюсь что встреваю, однако вот тут выложена математика, стоящая за методом ikkunan salvataja.

вот её реализация (запоздалая, правда) на языке ассемблера, с небольшой оптимизацией, описанной в документе выше.
заранее оговорюсь: на абсолютную математическую строгость не рассчитывайте. всё же, я тут не научный труд писал smile
так, например, понятие подпоследовательности не соответствует общепринятому в математике, но очевидно из контекста.
это же касается и понятия полной/неполной последовательности.

ассемблерная реализация (синтаксис интеловский, архитектура x86 686+, обвязка подпрограммы MASMовская):

N proc L: DWORD;
  MOV EAX, L;
  PUSH EAX;
  FILD L;
  FADD ST(0), ST(0);
  FSQRT;

  FSTCW WORD [L+2];
  FSTCW WORD [L];
  OR WORD [L], 0700h;
  FLDCW WORD [L];
  FISTP DWORD [ESP];
  FLDCW WORD [L+2];
  POP ECX;

  LEA EDX, [ECX+1];
  IMUL EDX, ECX;
  SHR EDX, 1;
  SUB EAX, EDX;
  LEA ECX, [EAX+ECX];
  CMOVLE EAX, ECX;

  RET;
N endp;

all your post are belong to us.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.011 сек, 7 запросов выполнено - Использовано памяти: 1.68 Мбайт (Пик: 1.77 Мбайт) ]