Вход для пользователей

You are here

TI-86: Удаление элемента списка

Здравстуйте!

А как удалить элемент списка в TI-86?

Команда DelVar(L(1)) не работает. Ошибка.

Удаление элемента списка если судить по инструкции возможно лишь в редакторе списков.

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

Изображение пользователя khusamov.

Ясно. Странный язык...

Изображение пользователя khusamov.

написать

написать программу, которая перезаписывает все элементы кроме удаляемого в новый список

Написал я эту программу. Но выяснилось что она работает очень медленно даже на небольших списках.

Re: написать. Сложно оценить скорость работы программы на эмуляторе, т.к. он работает медленно. Не знаю соответствует ли скорость эмулятора скорости самого калькулятора. Если вы написали программу использующую для перезаписи элементов цикл, то попробуйте сравнить её "скорость" со следующей программой, может будет шустрее:

PROGRAM:LNCUT
:ClLCD
:Input "LIST=",L
:Input "N=",N
:ClLCD
:If N==1
:Then
:Outpt(1,1,seq(L(I),I,2,dimL L))
:Else
:If N==dimL L
:Then
:Outpt(1,1,seq(L(I),I,1,N-1))
:Else
:Outpt(1,1,aug(seq(L(I),I,1,N-1),seq(L(I),I,N+1,dimL L)))
:End
:End

Ясно, что вместо вывода на дисплей программа (если она используется как подпрограмма) могла бы перезаписывать переменную L, а ввод списка и номера вырезаемого элемента можно опустить (задавать в основной программе):

PROGRAM:LNCUT
:If N==1
:Then
:seq(L(I),I,2,dimL L)->L
:Else
:If N==dimL L
:Then
:seq(L(I),I,1,N-1)->L
:Else
:aug(seq(L(I),I,1,N-1),seq(L(I),I,N+1,dimL L))->L
:End
:End
Изображение пользователя khusamov.

seq(Ух, как ловко вы тут распорядились забавной функцей seq(L(I),I,N+1,dimL L)!

Это ж можно и без For свободно обойтись!