Mike Ivanov (mikeiva) wrote,
Mike Ivanov
mikeiva

  • Music:

Программистское - забавная ошибка

Не уверен, что это кому-то тут будет интересно, но я вчера, как понял ситуацию, посмеялся.


Дано: есть маршрутный лист - грубо говоря, инструкция по изготовлению деталей. В нем указано, сколько их надо сделать. Соответственно, в базе деталей заведено столько же записей на изготавливаемое. Если в какой-то момент лист отредактировали и уменьшили плановое количество, то лишние детали надо поудалять. Т.к. по какому-то количеству деталей уже могли начаться работы, то удаляем мы их, начиная с последней (все осмысленные операции применяются к ним, наоборот, начиная с первой, так что последние можно с чистой совестью убрать).

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

Начинаю проверять: все отлично работает, если деталь в узел входит в количестве одной штуки. Если две одинаковых - маршрутный лист на деталь сокращается только на 1. Углубился в отладку, обнаруживаю следующее.

Допустим, для этого узла мы собираемся сделать одинаковые Деталь_1 и Деталь_2. Перебираем их в цикле: берем Деталь_1, находим ее маршрутный лист, уменьшаем количество в нем на 1 и натравливаем на него эту же процедуру... которая, чтобы сократить число деталей под новое количество, перебирает изготавливаемые по листу - идёт с конца, и удаляет Деталь_2. Программа выходит обратно в цикл, ищет следующую деталь к этому узлу - Деталь_2 - и таковой, разумеется, не обнаруживает.

В общем, ошибка, которая исправляется дописыванием трех символов - комплектующие детали тоже надо перебирать с конца - после того, как сначала минут сорок ее ищешь :)
Tags: work
Subscribe

  • Книжное: "Девятый дом", "Ночной цирк"

    Осенью читал необычайно мало. (Сейчас понял, что самая забавная из причин - месяца полтора в квартире было холодно, и если я устраивался читать - то…

  • Книжное: "Здесь восходит солнце"

    Читал тут книжку про Джорджа Харрисона ("Здесь восходит солнце. Духовные и музыкальные поиски Джорджа Харрисона"). В целом - скорее зря потратил…

  • Arts & Arcana

    Вчера очень вовремя - как раз к дню гейм-мастера - приехала D&D Arts & Arcana - большая книжка про историю игры, визуального стиля и все такое.…

  • 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.
  • 8 comments