Регистрация  |  Вход

Задачка по работе с листом.

Ребят, вот и вылился минус моего самообразования.
Задача такая:
Есть List:
Обьект 1
Обьект 2
Обьект 3
Обьект 4

Надо сделать метод, который при вызове переставлял каждый раз элемента таким образом.
Вызов 1:
Обьект 4
Обьект 1
Обьект 2
Обьект 3

Вызов 2:
Обьект 3
Обьект 4
Обьект 1
Обьект 2

Вызов 3:
Обьект 2
Обьект 3
Обьект 4
Обьект 1

Вызов 4:
Обьект 1
Обьект 2
Обьект 3
Обьект 4


Голову вот сижу два часа ломаю.

Ребят, вот и вылился минус моего самообразования.
Задача такая:
Есть List:
Обьект 1
Обьект 2
Обьект 3
Обьект 4

Надо сделать метод, который при вызове переставлял каждый раз элемента таким образом.
Вызов 1:
Обьект 4
Обьект 1
Обьект 2
Обьект 3

Вызов 2:
Обьект 3
Обьект 4
Обьект 1
Обьект 2

Вызов 3:
Обьект 2
Обьект 3
Обьект 4
Обьект 1

Вызов 4:
Обьект 1
Обьект 2
Обьект 3
Обьект 4


Голову вот сижу два часа ломаю.

Уважаемый Alexander Tsitsura подсказал как сделать)

list<String> list1 = new list<string>();
list1.add('Обьект 1');
list1.add('Обьект 2');
list1.add('Обьект 3');
list1.add('Обьект 4');


for(Integer i=0; i<list1.size(); i++) {
list<String> newList = new List<String>();
for (Integer j=0;j<list1.size(); j++)
{
Integer index = Math.mod((i + j), list1.size());
newList.add(list1[index]);
}
System.debug('111111 ' + newList);
}

Уважаемый [b]Alexander Tsitsura[/b] подсказал как сделать) 
[code]
list<String> list1 = new list<string>();
list1.add('Обьект 1');
list1.add('Обьект 2');
list1.add('Обьект 3');
list1.add('Обьект 4');
 
 
for(Integer i=0; i<list1.size(); i++) {
        list<String> newList = new List<String>();
        for (Integer j=0;j<list1.size(); j++)
        {
          Integer index = Math.mod((i + j), list1.size());    
          newList.add(list1[index]);
        }
        System.debug('111111 ' + newList);
}
[/code]

DevNull
Уважаемый Alexander Tsitsura подсказал как сделать)

Я бы за такое просто увольнял. По статье проф. непригодность.

[quote="DevNull"]Уважаемый [b]Alexander Tsitsura[/b] подсказал как сделать) 
[/quote]

Я бы за такое просто увольнял. По статье проф. непригодность.

Ну как то так

Ну как то так

wilder
Я бы за такое просто увольнял. По статье проф. непригодность.

Ну чего ты так? Такое решение лучше вообще никакого (все же лучшие решения уходят в скайп )
Лучше бы помог человеку разобраться с проблемой прежде чем наезжать.

[quote="wilder"]Я бы за такое просто увольнял. По статье проф. непригодность.[/quote]
Ну чего ты так? Такое решение лучше вообще никакого (все же лучшие решения уходят в скайп :D )
Лучше бы помог человеку разобраться с проблемой прежде чем наезжать.

Dmitry Shnyrev
Такое решение лучше вообще никакого (все же лучшие решения уходят в скайп )

А я скажу почему.

List, set ровно точно так же как и String, Double в салесфорс не просто так называются primitive data types. И если уже человек не умеет работать с примитивными данными, что ему можно доверить разрабатывать ?

[quote="Dmitry Shnyrev"]Такое решение лучше вообще никакого (все же лучшие решения уходят в скайп  ) [/quote]

А я скажу почему.

List, set ровно точно так же как и String, Double в салесфорс не просто так называются primitive data types. И если уже человек не умеет работать с примитивными данными, что ему можно доверить разрабатывать ?

wilder
Вчера я настолько задолбался, что с ошибкой с 4*4 умножил бы. Дедлайн(
А так есть намного более просто решение)
И если я такой галимый программист, то почему меня 3 года держат и платят деньги? Может я выполняю всю нужную работу хорошо?

[b]wilder[/b]
Вчера я настолько задолбался, что с ошибкой с 4*4 умножил бы. Дедлайн(
А так есть намного более просто решение) 
И если я такой галимый программист, то почему меня 3 года держат и платят деньги? Может я выполняю всю нужную работу хорошо? 

DevNull
wilder
Вчера я настолько задолбался, что с ошибкой с 4*4 умножил бы. Дедлайн(
А так есть намного более просто решение)
И если я такой галимый программист, то почему меня 3 года держат и платят деньги? Может я выполняю всю нужную работу хорошо?

Ну собственно Вы сами ответили на свой вопрос. Нас в школе научили так что даже бы если по среди ночи подняли, то мы бы ответили сколько будет 4*4. Дедлайн не отменяет базовых знаний которые должны быть и они не зависят ни от языка программирования ни от платформы.

А деньги вам платят видимо потому что, Вы успешно можете найти решение проблемы или в интернете или на форуме. Ну и наверное руководство не сильно отличается от Вас в плане знаний.

[quote="DevNull"][b]wilder[/b]
Вчера я настолько задолбался, что с ошибкой с 4*4 умножил бы. Дедлайн(
А так есть намного более просто решение) 
И если я такой галимый программист, то почему меня 3 года держат и платят деньги? Может я выполняю всю нужную работу хорошо?[/quote]

Ну собственно Вы сами ответили на свой вопрос. Нас в школе научили так что даже бы если по среди ночи подняли, то мы бы ответили сколько будет 4*4. Дедлайн не отменяет базовых знаний которые должны быть и они не зависят ни от языка программирования ни от платформы.

А деньги вам платят видимо потому что, Вы успешно можете найти решение проблемы или в интернете или на форуме. Ну и наверное руководство не сильно отличается от Вас в плане знаний.

Угу точно, так и есть. Куда мне аграному, который даже никогда не учился на программиста, и знает только в основном SF до этого дойти. Надо увольняться и опять в колхоз идти. Смысл мне работать. Все ж гуглить умеют и форум читать.
Жаль конечно тему нельзя удалить.

Угу точно, так и есть. Куда мне аграному, который даже никогда не учился на программиста, и знает только в основном SF до этого дойти. Надо увольняться и опять в колхоз идти. Смысл мне работать. Все ж гуглить умеют и форум читать.  
Жаль конечно тему нельзя удалить. 

DevNull
Угу точно, так и есть. Куда мне аграному, который даже никогда не учился на программиста, и знает только в основном SF до этого дойти. Надо увольняться и опять в колхоз идти. Смысл мне работать. Все ж гуглить умеют и форум читать.
Жаль конечно тему нельзя удалить.

А это здесь причем ? Ломоносов тоже был из глухой деревни, но это ему не помешало достичь многого. Все дело в желании и мотивации. И к сожалению деньги в IT не самый лучший мотиватор.

[quote="DevNull"]Угу точно, так и есть. Куда мне аграному, который даже никогда не учился на программиста, и знает только в основном SF до этого дойти. Надо увольняться и опять в колхоз идти. Смысл мне работать. Все ж гуглить умеют и форум читать.  
Жаль конечно тему нельзя удалить.[/quote]

А это здесь причем ? Ломоносов тоже был из глухой деревни, но это ему не помешало достичь многого. Все дело в желании и мотивации. И к сожалению деньги в IT не самый лучший мотиватор. 

wilder
DevNull
Угу точно, так и есть. Куда мне аграному, который даже никогда не учился на программиста, и знает только в основном SF до этого дойти. Надо увольняться и опять в колхоз идти. Смысл мне работать. Все ж гуглить умеют и форум читать.
Жаль конечно тему нельзя удалить.

А это здесь причем ? Ломоносов тоже был из глухой деревни, но это ему не помешало достичь многого. Все дело в желании и мотивации. И к сожалению деньги в IT не самый лучший мотиватор.


Я не гений. И я не программист от бога. И у меня нет возможности все свое личное время тратить на изучение чего либо( Даже на подработку нету времени. То что дается вам за пару месяцев, мне надо год.

[quote="wilder"][quote="DevNull"]Угу точно, так и есть. Куда мне аграному, который даже никогда не учился на программиста, и знает только в основном SF до этого дойти. Надо увольняться и опять в колхоз идти. Смысл мне работать. Все ж гуглить умеют и форум читать.  
Жаль конечно тему нельзя удалить.[/quote]

А это здесь причем ? Ломоносов тоже был из глухой деревни, но это ему не помешало достичь многого. Все дело в желании и мотивации. И к сожалению деньги в IT не самый лучший мотиватор.[/quote]
Я не гений. И я не программист от бога. И у меня нет возможности все свое личное время тратить на изучение чего либо( Даже на подработку нету времени. То что дается вам за пару месяцев, мне надо год. 

DevNull
Я не гений. И я не программист от бога. И у меня нет возможности все свое личное время тратить на изучение чего либо( Даже на подработку нету времени. То что дается вам за пару месяцев, мне надо год.

Вот в этом то и проблема. Я когда начал изучать салесфорс спал по 5-6 часов. Остальное время работал и читал.

[quote="DevNull"]
Я не гений. И я не программист от бога. И у меня нет возможности все свое личное время тратить на изучение чего либо( Даже на подработку нету времени. То что дается вам за пару месяцев, мне надо год.[/quote]

Вот в этом то и проблема. Я когда начал изучать салесфорс спал по 5-6 часов. Остальное время работал и читал.

у меня нет такой возможности( Физически. Есть определенные проблемы.

у меня нет такой возможности( Физически. Есть определенные проблемы.  

Товарищи. Я думаю это не самый лучший вопрос для обсуждения - кто круче.
У каждого свой жизненный путь развития как программиста.
Может кто-то и пишет здесь простые вопросы и не самые передовые решения, но это не повод друг на друга наезжать или оправдываться.
В автосервисах тоже не все мастера с золотыми руками (честно я вообще уже боюсь ездить в автосервисы).

Товарищи. Я думаю это не самый лучший вопрос для обсуждения - кто круче.
У каждого свой жизненный путь развития как программиста.
Может кто-то и пишет здесь простые вопросы и не самые передовые решения, но это не повод друг на друга наезжать или оправдываться. 
В автосервисах тоже не все мастера с золотыми руками (честно я вообще уже боюсь ездить в автосервисы).

Dmitry Shnyrev
Товарищи. Я думаю это не самый лучший вопрос для обсуждения - кто круче.
У каждого свой жизненный путь развития как программиста.
Может кто-то и пишет здесь простые вопросы и не самые передовые решения, но это не повод друг на друга наезжать или оправдываться.
В автосервисах тоже не все мастера с золотыми руками (честно я вообще уже боюсь ездить в автосервисы).

Да тут никто ничего и не доказывает. Я просто считаю, что должна быть определенная база. А сколько времени и сил нужно для ее получания уже каждый решает сам. Главное что бы было желание развиваться.

[quote="Dmitry Shnyrev"]Товарищи. Я думаю это не самый лучший вопрос для обсуждения - кто круче.
У каждого свой жизненный путь развития как программиста.
Может кто-то и пишет здесь простые вопросы и не самые передовые решения, но это не повод друг на друга наезжать или оправдываться. 
В автосервисах тоже не все мастера с золотыми руками (честно я вообще уже боюсь ездить в автосервисы).[/quote]

Да тут никто ничего и не доказывает. Я просто считаю, что должна быть определенная база. А сколько времени и сил нужно для ее получания уже каждый решает сам. Главное что бы было желание развиваться.

wilder
Да тут никто ничего и не доказывает. Я просто считаю, что должна быть определенная база. А сколько времени и сил нужно для ее получания уже каждый решает сам. Главное что бы было желание развиваться.

Вот тут я с тобой согласен полностью!

[quote="wilder"]Да тут никто ничего и не доказывает. Я просто считаю, что должна быть определенная база. А сколько времени и сил нужно для ее получания уже каждый решает сам. Главное что бы было желание развиваться.[/quote]
Вот тут я с тобой согласен полностью! 

Метод Alexander Tsitsura возвращает это:
|DEBUG|------ (Обьект 1, Обьект 2, Обьект 3, Обьект 4)
|DEBUG|------ (Обьект 2, Обьект 3, Обьект 4, Обьект 1)
|DEBUG|------ (Обьект 3, Обьект 4, Обьект 1, Обьект 2)
|DEBUG|------ (Обьект 4, Обьект 1, Обьект 2, Обьект 3)

Вроде то же, что и хотел автор, но в обратном порядке... Да и задача, вроде бы, в одну строчку вмещается (и так будет в том порядке, что указал автор)...

list<String> list1 = new list<string>();
list1.add('Обьект 1');
list1.add('Обьект 2');
list1.add('Обьект 3');
list1.add('Обьект 4');

for (Integer i = 0; i < list1.size(); i++)
{
list1.add(0, list1.remove(list1.size() - 1));
system.debug('-----' + list1);
}

Или я что-то не так понял?

Метод [b]Alexander Tsitsura[/b] возвращает это:
|DEBUG|------ (Обьект 1, Обьект 2, Обьект 3, Обьект 4)
|DEBUG|------ (Обьект 2, Обьект 3, Обьект 4, Обьект 1)
|DEBUG|------ (Обьект 3, Обьект 4, Обьект 1, Обьект 2)
|DEBUG|------ (Обьект 4, Обьект 1, Обьект 2, Обьект 3)

Вроде то же, что и хотел автор, но в обратном порядке... Да и задача, вроде бы, в одну строчку вмещается (и так будет в том порядке, что указал автор)...

[code]list<String> list1 = new list<string>();
list1.add('Обьект 1');
list1.add('Обьект 2');
list1.add('Обьект 3');
list1.add('Обьект 4');

for (Integer i = 0; i < list1.size(); i++)
{
  list1.add(0, list1.remove(list1.size() - 1));
  system.debug('-----' + list1);
}[/code]

Или я что-то не так понял?

scFlinT
Или я что-то не так понял?

Все правильно, wilder это и имел ввиду.

[quote="scFlinT"]Или я что-то не так понял?[/quote]
Все правильно, wilder это и имел ввиду.

хорошая тема.

как написано в инструкции, в Апексе Листы - это массивы, а массивы - это Листы.

а "базовых" массивных методов "pop/push, shift/unshift" то нету...

хорошая тема. 

как написано в инструкции, в Апексе Листы - это массивы, а массивы - это Листы.

а "базовых" массивных методов "pop/push, shift/unshift" то нету...

Den Brown
а "базовых" массивных методов "pop/push, shift/unshift" то нету...

А где они есть?
Только в JS видел.

[quote="Den Brown"]а "базовых" массивных методов "pop/push, shift/unshift" то нету...[/quote]
А где они есть?
Только в JS видел.

scFlinT
Метод Alexander Tsitsura возвращает это:
|DEBUG|------ (Обьект 1, Обьект 2, Обьект 3, Обьект 4)
|DEBUG|------ (Обьект 2, Обьект 3, Обьект 4, Обьект 1)
|DEBUG|------ (Обьект 3, Обьект 4, Обьект 1, Обьект 2)
|DEBUG|------ (Обьект 4, Обьект 1, Обьект 2, Обьект 3)

Вроде то же, что и хотел автор, но в обратном порядке... Да и задача, вроде бы, в одну строчку вмещается (и так будет в том порядке, что указал автор)...

list<String> list1 = new list<string>();
list1.add('Обьект 1');
list1.add('Обьект 2');
list1.add('Обьект 3');
list1.add('Обьект 4');

for (Integer i = 0; i < list1.size(); i++)
{
list1.add(0, list1.remove(list1.size() - 1));
system.debug('-----' + list1);
}

Или я что-то не так понял?

А цикл зачем?

[quote="scFlinT"]Метод [b]Alexander Tsitsura[/b] возвращает это:
|DEBUG|------ (Обьект 1, Обьект 2, Обьект 3, Обьект 4)
|DEBUG|------ (Обьект 2, Обьект 3, Обьект 4, Обьект 1)
|DEBUG|------ (Обьект 3, Обьект 4, Обьект 1, Обьект 2)
|DEBUG|------ (Обьект 4, Обьект 1, Обьект 2, Обьект 3)

Вроде то же, что и хотел автор, но в обратном порядке... Да и задача, вроде бы, в одну строчку вмещается (и так будет в том порядке, что указал автор)...

[code]list<String> list1 = new list<string>();
list1.add('Обьект 1');
list1.add('Обьект 2');
list1.add('Обьект 3');
list1.add('Обьект 4');

for (Integer i = 0; i < list1.size(); i++)
{
  list1.add(0, list1.remove(list1.size() - 1));
  system.debug('-----' + list1);
}[/code]

Или я что-то не так понял?[/quote]

А цикл зачем?

Gres
Den Brown
а "базовых" массивных методов "pop/push, shift/unshift" то нету...

А где они есть?
Только в JS видел.

В перле тоже есть.

[quote="Gres"][quote="Den Brown"]а "базовых" массивных методов "pop/push, shift/unshift" то нету...[/quote]
А где они есть?
Только в JS видел.[/quote]

В перле тоже есть.

wilder
А цикл зачем?

Эмм, съэмулировать 4 вызова строчки #9, а что?

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

[quote="wilder"]А цикл зачем?[/quote]
Эмм, съэмулировать 4 вызова строчки #9, а что?

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

scFlinT
wilder
А цикл зачем?

Эмм, съэмулировать 4 вызова строчки #9, а что?

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

Автор не плохо знаком с документацией и знает что есть метод clone

[quote="scFlinT"][quote="wilder"]А цикл зачем?[/quote]
Эмм, съэмулировать 4 вызова строчки #9, а что?

Я ж так понял, у автора есть некий гипотетический метод, при вызове которого нужно делать swap элементов в гипотетическом массиве.[/quote]

Автор не плохо знаком с документацией и знает что есть метод clone

wilder
Автор не плохо знаком с документацией и знает что есть метод clone

Что-то я не улавливаю нить - причём тут метод clone?

[quote="wilder"]Автор не плохо знаком с документацией и знает что есть метод clone[/quote]
Что-то я не улавливаю нить - причём тут метод clone?

wilder
В перле тоже есть.

Я в основном работаю со строго типизированными ООП языками и там не встречал.

[quote="wilder"]В перле тоже есть.[/quote]
Я в основном работаю со строго типизированными ООП языками и там не встречал.

scFlinT
list1.add(0, list1.remove(list1.size() - 1))

Тут мой затуп. Задача в одно действие решается list1.add(list1.remove(0))

[quote="scFlinT"]list1.add(0, list1.remove(list1.size() - 1))[/quote]

Тут мой затуп. Задача в одно действие решается list1.add(list1.remove(0))

wilder
Тут мой затуп. Задача в одно действие решается

Так а я ж о чём

wilder
list1.add(list1.remove(0))

В описании задачи русским по белому написано, что нужно взять последний элемент в массиве и положить его перед 1-ым (это если внимательно просмотреть примеры вызовов #1-#4). А ваш код берёт 1-ый элемент и толкает его в конец списка. Это очень важное различие!

З.Ы. вы и есть DevNull, что-ли?

[quote="wilder"]Тут мой затуп. Задача в одно действие решается[/quote]
Так а я ж о чём :)

[quote="wilder"]list1.add(list1.remove(0))[/quote]
В описании задачи русским по белому написано, что нужно взять последний элемент в массиве и положить его перед 1-ым (это если внимательно просмотреть примеры вызовов #1-#4). А ваш код берёт 1-ый элемент и толкает его в конец списка. Это очень важное различие! :)

З.Ы. вы и есть DevNull, что-ли?

scFlinT
В описании задачи русским по белому написано, что нужно взять последний элемент в массиве и положить его перед 1-ым (это если внимательно просмотреть примеры вызовов #1-#4). А ваш код берёт 1-ый элемент и толкает его в конец списка. Это очень важное различие!

list1.add(0,list1.remove(list1.size()-1)) - цикл здесь зачем ?

[quote="scFlinT"]В описании задачи русским по белому написано, что нужно взять последний элемент в массиве и положить его перед 1-ым (это если внимательно просмотреть примеры вызовов #1-#4). А ваш код берёт 1-ый элемент и толкает его в конец списка. Это очень важное различие![/quote]

list1.add(0,list1.remove(list1.size()-1)) - цикл здесь зачем ?

wilder
list1.add(0,list1.remove(list1.size()-1)) - цикл здесь зачем ?

Шутите? Я же выше написал: "съэмулировать 4 вызова строчки #9". Для того, чтобы сделать 4 свопа в тестовом листе. И 4 раза вывести "system.debug". Чтобы бы было наглядно видно, как отрабатывает 9-я строчка. Так понятнее? А так да, цикл там без надобности.

[quote="wilder"]list1.add(0,list1.remove(list1.size()-1)) - цикл здесь зачем ?[/quote]
Шутите? Я же выше написал: "съэмулировать 4 вызова строчки #9". Для того, чтобы сделать 4 свопа в тестовом листе. И 4 раза вывести "system.debug". Чтобы бы было наглядно видно, как отрабатывает 9-я строчка. Так понятнее? А так да, цикл там без надобности.