169 похожих чатов

Всем привет! помогите немного разобраться. Была идея залезть под копот unshift.

Предположил, что я могу найти в массиве сперва
наибольшее число, после этого удалив его из изначального массива и вставив в новый, где и пошел бы отчет от большего к меньшему.
Я оформил это в цикл, но уходит оно в итоге в слепой цикл. Подскажите, где я ошибся?

puts "Исходный массив:"
first_array = [1, 2, 3, 4, 5, 6, 7]
puts first_array.to_s
puts "Новый массив, полученный из исходного:"

last_array = []
max_value = 0

while first_array != []
for item in first_array do
if item > max_value
max_value = item
end
end

first_array.delete(max_value)
last_array << max_value
end

puts last_array.to_s
puts max_value

6 ответов

34 просмотра

Что значит слепой цикл?

Попробуйте убрать while и поместить строки с добавлением и удалением в цикл for Не за компом, но заинтересовался)) Да в итоге тут из ферст масива удаляется 7, а цикл while не остановится так как массив не станет пустым И можно убрать max_value , так как она не нужна и все это можно делать с item Мне кажется так: last_array = [] max_value = 0 for item in first_array do first_array.delete(item) last_array << item end puts last_array.to_s puts max_value

Никита-Ракита Автор вопроса
Sasha S
Попробуйте убрать while и поместить строки с добав...

он не станет пустым? а каким он будет после удаления 7?

Чтобы ваша прога заработала добавил одну строчку. puts "Исходный массив:" first_array = [1, 2, 3, 4, 5, 6, 7] p first_array puts "Новый массив, полученный из исходного:" last_array = [] max_value = 0 while first_array != [] for item in first_array do if item > max_value max_value = item end end first_array.delete(max_value) last_array << max_value max_value = 0 # нужно сбросить, чтобы найти НОВЫЙ max_value end p last_array puts max_value Пару замечаний: 1. Не понятно, что вы хотите сделать - упорядочить исходный массив по убыванию или просто расположить его элементы в обратном порядке. 2. По правде говоря сама идея нахождения максимального значения и его последующего удаления из исходного массива плоха, т.к. если в исходном массиве будут одинаковые элементы, то все дубликаты пропадут (так и задумывалось?).

Никита-Ракита Автор вопроса
Valery
Чтобы ваша прога заработала добавил одну строчку. ...

благодарю за помощь, согласен, что данное решение выходит громоздким, благодарю за помощь!

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта