dc: как мне вытолкнуть (и выбросить) верхний номер стека?
В DC, как мне вытолкнуть и сбросить число с вершины стека? Стек с тремя предметами (1 2 3
) должен стать стеком с двумя предметами (2 3
). В настоящее время я помещаю число в другую стопку (Sz), но это выглядит довольно неубедительно.
2 ответа
Есть множество способов удалить вершину стека, но у них есть побочные эффекты. Удаление элемента без побочных эффектов требует, чтобы вы избежали включенных побочных эффектов.
Чтобы удалить вершину стека без побочных эффектов, убедитесь, что вершина является числом, а затем выполните d!=z
, Если в стеке было [5], это делает следующее
- Начните с предмета для удаления.
Stack: [5]
- Дублирующая вершина стека.
Stack: [5,5]
- Откройте топ 2 и проверьте, не равны ли они:
5 != 5
Stack: []
- Если тест пройден (чего не может), запустите
z
Stack: []
Чтобы убедиться, что вершина стека является числом, я использую Z
который вычислит длину строки или количество цифр в числе и вернет ее назад. Есть и другие параметры, такие как X. Все, что делает число из чего-либо, будет работать, так что оно будет совместимо с!=.
Таким образом, полный ответ для вставки копии во всех ситуациях следующий:
Zd!=r
Я обычно втыкаю это в регистр D (для Drop):
[Zd!=r]sD
и тогда я смогу бежать
lDx