PDA

Просмотр полной версии : Задача [0] - Премиум на один месяц


mAnGoL
06.09.2015, 02:00
Платформа : Java

Напишите программу, которая выводит на экран числа от 1 до 100.

При этом вместо чисел, кратных трем, программа должна выводить слово «mmo-», кратных пяти — слово «develop.ru» *.

*При всем этом можно передавать лишь 1 переменную final String, на вывод числа, слово. (Передача в метод печати ограничено 1 запросом).

P.S. Для @b3trayer (https://forum.antichat.xyz/members/890287/) , @Deazer (https://forum.antichat.xyz/members/890361/), @L2CCCP (https://forum.antichat.xyz/members/890331/) запрещено юзать if, else.

Естественно есть подвох.

Готовые решения ложить под хайд по имени пользователя @Mangol (https://forum.antichat.xyz/members/890260/)

kick
06.09.2015, 02:33
Качество кода учитывается! Лучший из вариантов получит Премиум на один месяц.

zcxv
06.09.2015, 05:54
Не совсем понял: "При всем этом можно передавать лишь 1 переменную final String, на вывод числа, слово. (Передача в метод печати ограничено 1 запросом)."

Код:


[CODE]
public static void version1() {
final int num1 = 3;
final int num2 = 5;
final String string = "mmo-develop.ru";
for(int i = 1; i

test
06.09.2015, 07:20
PHP:


[CODE]
public
static
void
main
(
String
[
]
args
)
{
StringBuilder s
=
new
StringBuilder
(
)
;
for
(
int i
=
1
;
i

Tyrel
06.09.2015, 11:06
Код:


[CODE]
public class Test
{
public static void main(String[] args)
{
for(int i = 0; i

mAnGoL
06.09.2015, 11:10
Частично, но все же нет. Как выше описано есть злосный подвох.

Tyrel
06.09.2015, 11:13
Хм, тогда ТЗ неверное, все что описано соблюдено, и кратность, и передача строго 1 параметра final String и отсутствие if, else))

L2CCCP
06.09.2015, 11:15
Код:


[CODE]
package com.l2cccp;

/**
* @author L2CCCP
* @site http://l2cccp.com/
*/
public class MangolOmgCrazyWork
{
public static void main(String... args)
{
for(int i = 1; i

mAnGoL
06.09.2015, 11:16
Почти верно. Но есть подвох. Думай)

Tyrel
06.09.2015, 11:21
Ну тогда так, если уж вообще строго 1 переменная final String

Код:


[CODE]
public class Test
{
public static void main(String[] args)
{
final String s = "%1%";
for(int i = 0; i

mAnGoL
06.09.2015, 11:38
Нет, думай! Близко, очень близко! Ты не о том сейчас думаешь) Думать нужно не о финалах уже.

Tyrel
06.09.2015, 11:54
Дай хоть подсказку что не так))

Иван
06.09.2015, 11:54
Не могу не как вставить хайд

mAnGoL
06.09.2015, 11:54
Готовые решения ложить под хайд по имени пользователя @Mangol (https://forum.antichat.xyz/members/890260/) !

mAnGoL
06.09.2015, 11:56
Скрытое содержимое для пользователей с ID: 260

Иван
06.09.2015, 11:57
Pastebin

Tyrel
06.09.2015, 11:57
Теперь точно все)))

Код:


[CODE]
public class Test
{
public static void main(String[] args)
{
for(int i = 0; i

mAnGoL
06.09.2015, 11:58
Пока 2 лидера.

kick
06.09.2015, 12:00
Не могу не как вставить хайд


Хайд

В добавок на панели BB-кодов всё есть с описанием

mAnGoL
06.09.2015, 12:09
Близко но нет, есть подвох.

Иван
06.09.2015, 12:22
Pastebin

Убрал кейс, лишние пробелы. Менее понятно, но меньше кода. + 3 и 5 добавил

kick
06.09.2015, 12:24
У нас уже 3 лидера.

Молодец догадался

mAnGoL
06.09.2015, 12:25
String tmpStr = "";

Должна быть финализирована.

+ ко всему лог должен идти

1

2

и тд.

Иван
06.09.2015, 12:41
Pastebin

sout в столбик.

=======

String tmpStr = "";

Должна быть финализирована.

=======

private static finalString text --> printNums(text);

Или нельзя использовать промежуточное временное поле, для решения этой задачи?

Иван
06.09.2015, 13:50
Скрытое содержимое для пользователей с ID: 260

kick
06.09.2015, 14:10

Mizuwokiru
06.09.2015, 14:54
final String mmo = "mmo-develop.ru";

for ( int i = 0; i

kick
06.09.2015, 14:56
Это не решение

mAnGoL
06.09.2015, 16:18
@Warencense (https://forum.antichat.xyz/members/890154/) - перечитай еще раз задачу. Все должно лежать в 1 финализированной переменной.

test
06.09.2015, 17:14
PHP:


[CODE]
public
static
void
main
(
String
[
]
args
)
{
StringBuilder b
=
new
StringBuilder
(
)
;
for
(
int i
=
1
;
i

kick
06.09.2015, 19:32
В 1:00 закончится время на решение задачи

Mizuwokiru
06.09.2015, 20:41
@Warencense (https://forum.antichat.xyz/members/890154/) - перечитай еще раз задачу. Все должно лежать в 1 финализированной переменной.


Оу, пардон, читаю через абзацы. Тогда так:

for(int i = 0; i

Java-man
06.09.2015, 20:57
Первый вариант - красивый.

Код:



public class Test
{
public static void main(String[] args)
{
Optional string = IntStream.rangeClosed(1, 100)
.mapToObj(i -> i % 15 == 0 ? "mmo-develop.ru" : String.valueOf(i))
.map(i -> parseInt(i, 1) % 3 == 0 ? "mmo-" : i)
.map(i -> parseInt(i, 1) % 5 == 0 ? "develop.ru" : i)
.reduce((a, b) -> a + System.lineSeparator() + b);
System.out.println(string.get());
}

public static int parseInt(String number, int defaultVal)
{
try
{
return Integer.parseInt(number);
}
catch (NumberFormatException e)
{
return defaultVal;
}
}
}


Второй вариант - короткий. Естественно я его выкладываю в максимально читабельном варианте, так как я не дебил. А так его можно сложить в одну строку.

Код:



public class Test
{
public static void main(String[] args)
{
Optional string = IntStream.rangeClosed(1, 100)
.mapToObj(i -> (i % 15 == 0)
? "mmo-develop.ru"
: (i % 3 == 0)
? "mmo-"
: (i % 5 == 0)
? "develop.ru"
: String.valueOf(i))
.reduce((a, b) -> a + System.lineSeparator() + b);
System.out.println(string.get());
}
}

Gaikotsu
06.09.2015, 21:39
Код:


[CODE]
for (int i = 1; i

Иван
06.09.2015, 21:55
Pastebin

Учтено условие final String, String += в стринг билдер. Больше объекто-ориентированно выглядит, как и задумывалось Oracle

Deazer
07.09.2015, 00:42
for(int i = 1; i

mAnGoL
07.09.2015, 00:53
***Скрытый текст не может быть процитирован.***
Тернарные ни кто не запрещал же ?


Нет, никто не запрещал. Не правильно, есть подвох.

Influence
07.09.2015, 00:59
***Скрытый текст не может быть процитирован.***
Тернарные ни кто не запрещал же ?


с одной стороны - нет, с другой - в основе те же иф-елсы

zcxv
07.09.2015, 01:15
***Скрытый текст не может быть процитирован.***
Все кто скинул перечитайте внимательно задание. :dance2:



Вывод используется один раз с final String переменной

Код:


[CODE]
public static void main(String[] args) {
MmoDevelop obj = new MmoDevelop ();
obj.version1();
}

final String string = "null".toString(); //disabling inlining
public void version1() {
Field f;
try {
f = MmoDevelop .class.getDeclaredField("string");
f.setAccessible(true);
Field modifiers = Field.class.getDeclaredField("modifiers");
modifiers.setAccessible(true);
modifiers.setInt(f, f.getModifiers() & ~Modifier.FINAL);
} catch(Throwable e) {
throw new RuntimeException(e);
}

final int num1 = 3;
final int num2 = 5;
final int num3 = 15;
for(int i = 1; i

Deazer
07.09.2015, 01:22
***Скрытый текст не может быть процитирован.***


for(int i = 1; i

xDarkDelux
07.09.2015, 09:22
Ну и кто победитель?

mAnGoL
07.09.2015, 10:35
Выйграли:

@Java-man (https://forum.antichat.xyz/members/890645/) - премиум на 1 месяц.



Первый вариант - красивый.

Код:



public class Test
{
public static void main(String[] args)
{
Optional string = IntStream.rangeClosed(1, 100)
.mapToObj(i -> i % 15 == 0 ? "mmo-develop.ru" : String.valueOf(i))
.map(i -> parseInt(i, 1) % 3 == 0 ? "mmo-" : i)
.map(i -> parseInt(i, 1) % 5 == 0 ? "develop.ru" : i)
.reduce((a, b) -> a + System.lineSeparator() + b);
System.out.println(string.get());
}

public static int parseInt(String number, int defaultVal)
{
try
{
return Integer.parseInt(number);
}
catch (NumberFormatException e)
{
return defaultVal;
}
}
}


Второй вариант - короткий. Естественно я его выкладываю в максимально читабельном варианте, так как я не дебил. А так его можно сложить в одну строку.

Код:



public class Test
{
public static void main(String[] args)
{
Optional string = IntStream.rangeClosed(1, 100)
.mapToObj(i -> (i % 15 == 0)
? "mmo-develop.ru"
: (i % 3 == 0)
? "mmo-"
: (i % 5 == 0)
? "develop.ru"
: String.valueOf(i))
.reduce((a, b) -> a + System.lineSeparator() + b);
System.out.println(string.get());
}
}



@b3trayer (https://forum.antichat.xyz/members/890287/) - премиум 2 недели.

[QUOTE="zcxv"]

Вывод используется один раз с final String переменной

Код:



public static void main(String[] args) {
MmoDevelop obj = new MmoDevelop ();
obj.version1();
}

final String string = "null".toString(); //disabling inlining
public void version1() {
Field f;
try {
f = MmoDevelop .class.getDeclaredField("string");
f.setAccessible(true);
Field modifiers = Field.class.getDeclaredField("modifiers");
modifiers.setAccessible(true);
modifiers.setInt(f, f.getModifiers() & ~Modifier.FINAL);
} catch(Throwable e) {
throw new RuntimeException(e);
}

final int num1 = 3;
final int num2 = 5;
final int num3 = 15;
for(int i = 1; i

Код:


[CODE]
public class Mmodev {

final String text;

public Mmodev() {
text = makeString();
}

public static void main(String[] args) {
Mmodev m1 = new Mmodev();
System.out.println(m1);
}

private String makeString() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 1; 100 >= i; i++) {
stringBuilder.append((i % 5 == 0 && i % 3 == 0) ? "mmo-develop.ru\n" : (i % 5 == 0) ? "develop.ru\n" : (i % 3 == 0) ? "mmo-\n" : i + "\n");
}
return stringBuilder.toString();
}

@Override
public String toString() {
return text;
}
}

Tyrel
07.09.2015, 10:40
Покажите хоть код всех участников, интересно же решение других

mAnGoL
07.09.2015, 10:43
Up. Посты открыты для просмотра.

Tyrel
07.09.2015, 10:58
А по каким критериям оценивалось ?)) В теме есть более простые решения, но при этом победители все усложняют

mAnGoL
07.09.2015, 10:59
А по каким критериям оценивалось ?)) В теме есть более простые решения, но при этом победители все усложняют


Нестандартное мышление.

Tyrel
07.09.2015, 11:03
Нестандартное мышление.


Тогда да, снимаю шляпу, не стандартно это точно -

L2CCCP
07.09.2015, 11:29
Думал я наркоман, а тут вон оно как

Грац победителей))

Иван
07.09.2015, 11:44
Спасибо.

:

test
07.09.2015, 12:28
Сразу нужно писать что нужно сделать самый медленный код.

Из всех победителей самый нормальный вариант у Иван

Не хватает еще использование JNI.

kick
07.09.2015, 14:01
Сразу нужно писать что нужно сделать самый медленный код.
Из всех победителей самый нормальный вариант у Иван
Не хватает еще использование JNI.





Качество кода учитывается! Лучший из вариантов получит Премиум на один месяц.


И далеко не самый медленный код. Победителей не судят.

test
07.09.2015, 14:25
Значит у нас разные понятия "Качества".

Просто нужно было изначально писать что нужно не хорошее решение а "Нестандартное мышление".

Да и раздел называется "Java Академия" чему такой код научит новичков ?

Tyrel
07.09.2015, 15:25
Да и раздел называется "Java Академия" чему такой код научит новичков ?


Научит тому, как простую задачу можно усложнить в 10 раз

L2CCCP
07.09.2015, 15:49
У меня тоже бомбануло от такого вердикта но не потому что мой вариант не посчитали лучшим (хотя он сработает быстрее всех реализации), а лишь потому что один из вариантов стал причиной взрыва моих глазных капилляров.

+Награды были выданы тем у кого не было према.

PS: Соглашусь с @Test (https://forum.antichat.xyz/members/890461/), нужно было писать не 'Качество кода учитывается! ', а 'Выиграет не стандартный код без учета качества' так как качественным кодом можно назвать программу, которая отрабатывает минимальной промежуток времени без лишнего мусора, а тот код что попал в призеры далек от этого понятия.

Одна фраза привела к пукано бомбилову

PPS: Не парьтесь будут еще конкурсы, сам придумаю что то как будет время

Desquire
07.09.2015, 19:04
Ну вообще тут много непонятного.

Условие задачи : не корректно поставлено условие задачи.

- не описанно что должно быть с числами 15, 30 и т.д. ( по логике понятно что полное, что должно быть ммо-дев.ру, но все же)

- елсе нельзя, но как оказалось тернарные можно.....

А критерий "оригинальности кода" как по мне, не совсем уместен.

Как мудреный, сложный, возможно и более долгий вариант может быть лучше?

Я только учусь ( 4 курс) и нам все время объясняли:

Код нужно строить понятно, не нужно придумывать сложные алгоритмы для решения елементарных задач.

По минимуму использовать ресурсы.

Варианты победителей, как по мне мудреные. есть менее, есть более.

От Мангола был комент, мол почти вверно, но есть подвох. ( к примеру Сссра )

Задача у него не решена что ли? операторы иф не использовал. выводит 1 строку. минимум ненужного кода.

Почему меня так задела эта тема, участвую в олимпиадах по программированию и у меня вот второй тур 12 числа....

Если бы там была такая задача ( пофиг на то что не корректное условие) то уверен что половину вашего "оригинального" кода отбросили бы.

Почему? Чаще всего есть ограничение : время выполнения, кол-во операцый, кол-во памяти под переменные.

kick
07.09.2015, 19:25
Ну вообще тут много непонятного.
Условие задачи : не корректно поставлено условие задачи.
- не описанно что должно быть с числами 15, 30 и т.д. ( по логике понятно что полное, что должно быть ммо-дев.ру, но все же)
- елсе нельзя, но как оказалось тернарные можно.....

А критерий "оригинальности кода" как по мне, не совсем уместен.
Как мудреный, сложный, возможно и более долгий вариант может быть лучше?

Я только учусь ( 4 курс) и нам все время объясняли:
Код нужно строить понятно, не нужно придумывать сложные алгоритмы для решения елементарных задач.
По минимуму использовать ресурсы.

Варианты победителей, как по мне мудреные. есть менее, есть более.

От Мангола был комент, мол почти вверно, но есть подвох. ( к примеру Сссра )
Задача у него не решена что ли? операторы иф не использовал. выводит 1 строку. минимум ненужного кода.

Почему меня так задела эта тема, участвую в олимпиадах по программированию и у меня вот второй тур 12 числа....
Если бы там была такая задача ( пофиг на то что не корректное условие) то уверен что половину вашего "оригинального" кода отбросили бы.
Почему? Чаще всего есть ограничение : время выполнения, кол-во операцый, кол-во памяти под переменные.


Ну вот ты будешь устраиваться на работу к работодателю и ты ему скажешь условие не корректно поставлено? Ну вот ты сказал, что учишься в олимпиадных заданиях так же присутствует подвох. Пример не совсем удачный CCCP сразу реализовал верно.

Java-man
07.09.2015, 19:57
Я удивлен что мое решение со стримами является оригинальным. И я естественно не буду иметь ничего против, если мой приз отдадут кому-то другому. Но не из-за кода, а из-за того, что мы с Манголом состоим в одной команде. Насчет того, что мой код долгий: я уверен что второй вариант при добавлении параллельности ничуть не уступит вашим однопоточным итерациям. А при увеличении интервала чисел и вовсе будет быстрее.

kick
07.09.2015, 20:33
Я удивлен что мое решение со стримами является оригинальным. И я естественно не буду иметь ничего против, если мой приз отдадут кому-то другому. Но не из-за кода, а из-за того, что мы с Манголом состоим в одной команде. Насчет того, что мой код долгий: я уверен что второй вариант при добавлении параллельности ничуть не уступит вашим однопоточным итерациям. А при увеличении интервала чисел и вовсе будет быстрее.


Распределял награды я и написал манголу как распределились места, что бы он опубликовал

L2CCCP
07.09.2015, 23:09
Я удивлен что мое решение со стримами является оригинальным. И я естественно не буду иметь ничего против, если мой приз отдадут кому-то другому. Но не из-за кода, а из-за того, что мы с Манголом состоим в одной команде. Насчет того, что мой код долгий: я уверен что второй вариант при добавлении параллельности ничуть не уступит вашим однопоточным итерациям. А при увеличении интервала чисел и вовсе будет быстрее.


У меня бомбануло не из за тебя

Мангол в курсе

Mizuwokiru
07.09.2015, 23:15
Нестандартное мышление.


Пф, у меня оно притихло после двух лет теребиловки мозгов тичером по поводу усложнения кода всякими проверками на дурачка и т.п.

zcxv
08.09.2015, 05:59
У меня бомбануло не из за тебя
Мангол в курсе


Грязные хаки они такие, если обо мне