Ну и кто победитель?
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
zcxv - премиум 2 недели.Первый вариант - красивый.
Код:public class Test { public static void main(String[] args) { Optional<String> 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> 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()); } }
Иван - премиум 2 недели.Вывод используется один раз с 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 <= 100; i++) { while(i % num1 == 0) { try { f.set(this, "mmo"); } catch(ReflectiveOperationException e) { throw new RuntimeException(e); } break; } while(i % num2 == 0) { try { f.set(this, "develop"); } catch(ReflectiveOperationException e) { throw new RuntimeException(e); } break; } while(i % num3 == 0) { try { f.set(this, "mmo-develop.ru"); } catch(ReflectiveOperationException e) { throw new RuntimeException(e); } break; } while(i % num1 != 0 && i % num2 != 0) { try { f.set(this, String.format("%d", i)); } catch(ReflectiveOperationException e) { throw new RuntimeException(e); } break; } System.out.println(string); } }
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;
}
}
Нестандартное мышление.А по каким критериям оценивалось ?)) В теме есть более простые решения, но при этом победители все усложняют
Тогда да, снимаю шляпу, не стандартно это точно -Нестандартное мышление.
Научит тому, как простую задачу можно усложнить в 10 разДа и раздел называется "Java Академия" чему такой код научит новичков ?
Ну вот ты будешь устраиваться на работу к работодателю и ты ему скажешь условие не корректно поставлено? Ну вот ты сказал, что учишься в олимпиадных заданиях так же присутствует подвох. Пример не совсем удачный CCCP сразу реализовал верно.Ну вообще тут много непонятного.
Условие задачи : не корректно поставлено условие задачи.
- не описанно что должно быть с числами 15, 30 и т.д. ( по логике понятно что полное, что должно быть ммо-дев.ру, но все же)
- елсе нельзя, но как оказалось тернарные можно.....
А критерий "оригинальности кода" как по мне, не совсем уместен.
Как мудреный, сложный, возможно и более долгий вариант может быть лучше?
Я только учусь ( 4 курс) и нам все время объясняли:
Код нужно строить понятно, не нужно придумывать сложные алгоритмы для решения елементарных задач.
По минимуму использовать ресурсы.
Варианты победителей, как по мне мудреные. есть менее, есть более.
От Мангола был комент, мол почти вверно, но есть подвох. ( к примеру Сссра )
Задача у него не решена что ли? операторы иф не использовал. выводит 1 строку. минимум ненужного кода.
Почему меня так задела эта тема, участвую в олимпиадах по программированию и у меня вот второй тур 12 числа....
Если бы там была такая задача ( пофиг на то что не корректное условие) то уверен что половину вашего "оригинального" кода отбросили бы.
Почему? Чаще всего есть ограничение : время выполнения, кол-во операцый, кол-во памяти под переменные.
Распределял награды я и написал манголу как распределились места, что бы он опубликовалЯ удивлен что мое решение со стримами является оригинальным. И я естественно не буду иметь ничего против, если мой приз отдадут кому-то другому. Но не из-за кода, а из-за того, что мы с Манголом состоим в одной команде. Насчет того, что мой код долгий: я уверен что второй вариант при добавлении параллельности ничуть не уступит вашим однопоточным итерациям. А при увеличении интервала чисел и вовсе будет быстрее.
У меня бомбануло не из за тебяЯ удивлен что мое решение со стримами является оригинальным. И я естественно не буду иметь ничего против, если мой приз отдадут кому-то другому. Но не из-за кода, а из-за того, что мы с Манголом состоим в одной команде. Насчет того, что мой код долгий: я уверен что второй вариант при добавлении параллельности ничуть не уступит вашим однопоточным итерациям. А при увеличении интервала чисел и вовсе будет быстрее.
Пф, у меня оно притихло после двух лет теребиловки мозгов тичером по поводу усложнения кода всякими проверками на дурачка и т.п.Нестандартное мышление.