JavaRush/Java блог/Random/Интересные лёгкие проекты
Dmytro Tretiakov
25 уровень

Интересные лёгкие проекты

Статья из группы Random
участников
Всем привет! Даже будучи (на момент создания поста) на 8м уровне, уже нашёл интересное применение базовым методам в Java. За 2 минуты написал программу, симулирующую человека, пишущего с ошибками. В коде нет абсолютно ничего сложного, любой новичок поймёт что к чему:
import java.util.Random;

public class ThreadSleep {

    public static void main (String[] args) throws InterruptedException{
        String text = "Hello my frend\b\b\biend! Welcome to MAtr\b\bTRIX!";
        Random newRandom = new Random();

        for (char var: text.toCharArray()) {
            System.out.print(var);
            Thread.sleep(newRandom.nextInt(500));
        }
    }

}
Я уверен, что интересные задачки являются частью мотивации человека двигаться дальше. Вопрос в следующем: есть ли среди присутствующих люди, которые создали коротенький код ради "поиграться" используя методы, которые с лёгкостью освоит новичок? Если да — оставляйте его в комментариях. Просто условия задачи тоже приветствуются!
Комментарии (4)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #1384518
Уровень 35
Expert
28 апреля 2019, 23:52
Вот тебе секретного непонятного кода немножко))
public static void main(String[] args) throws InterruptedException {
    int[] m=new int[]{77,65,84,82,73,88,32};
    int[] order=new int[50];
    Random r=new Random();
    for(int i=0; i<50;) {
        System.out.print((char)(m[order[i++]=6]));
        System.out.print((char)32);
    }
    for(int j=300;;Thread.sleep(60+(j/=1.1) )) {
        System.out.print((char)10);
        for (int i=-1; ++i<50; System.out.print((char)32)) {
            if(++order[i]>5){
                order[i]=r.nextInt(100)<7?0:6;
                System.out.print((char)(m[order[i]]+(r.nextInt(100)>1?0:32)));
            }else {
                System.out.print((char)(m[order[i]]+(r.nextInt(100)<50?0:32)));
            }
        }
    }
}
Dmytro Tretiakov
Уровень 25
29 апреля 2019, 09:38
Разобрал код, очень хороший алгоритм рандомного выбора :) Получилось также немного упростить всю систему до одного цикла:
import java.util.Random;
public class Ilyas {
    public static void main(String[] args) throws InterruptedException {
        int[] m = new int[] {77,65,84,82,73,88,32}; // [MATRIX ] in ASCII
        int k; //for random letter selection from m

        Random r = new Random();
        for (int i = 0;;) {
            if (i > 50) {
                Thread.sleep(30);
                System.out.println();
                i = 0;
                continue;
            }
            k = r.nextInt(7); //selecting random letter from m (numbers from 0 .. 6)

            //if k = 6 (*space* char from m) and r.nextInt > 5, next method will print out @ character,
            // as (32+32 = 64), which represents @ in ASCII. Otherwise, if r.nextInt < 5, it will print out *space*
            System.out.print((char)(m[k]+(r.nextInt(10) < 5 ? 0 : 32)));
            System.out.print((char)32);
            i++;
        }
    }
}
Anonymous #1384518
Уровень 35
Expert
29 апреля 2019, 10:16
Работает иначе. Вертикального текста матрицы нету)). Да и выглядит как стена букв, а не как линии. Но молодец что поинтересовался и пытался разобраться) Объясню тогда работу кода, который там был: • Первый for создает первую строку из букв, и сохраняет в стартовый порядок. Все начинаются с пустоты (пробелов) • Второй for запускает бесконечно третий вложенный цикл, который печатает новые строки. Строки идут согласно порядку order[], чтобы получались вертикальные слова MATRIX. (порядок высчитывается в 12 строке ++) • Буквы меняются рандомно — заглавные на строчные 50% шанс (16 строка) • (строки 12-14) Если встречается пробел, то вероятность, что начнётся новое слово меньше 7%, иначе повторный пробел, либо 1% шанс что он будет заменён на символ @ Окончательно должен быть эффект вертикальных линий. Сам текст плавно начинает ускорятся засчёт уменьшения j И да... я просто расчитывал, что никто не будет разбирать этот гауно код, а просто посмотрит его работу.
Dmytro Tretiakov
Уровень 25
29 апреля 2019, 11:59
Блин, вот в чём дело... Честно говоря, я проглядел тот факт, что он печатал вертикально.. Моя ошибка) Спасибо за ответ!