LoginSignup
2
2

More than 5 years have passed since last update.

Kotlinに煽られる

Last updated at Posted at 2015-12-24

Kotlinで"進捗どうですか?"

まだ無いような気がするので投稿してみます。ついでにJavaも。
元ネタはこちら。そのほかの言語の良い纏めがこちら

Kotlin

最初はKotlinの特徴が出るように色々仕込んでいたのですが、無駄に複雑になったのでシンプルにしました。
Kotlinのバージョンは 1.0.0-beta-4583 です。

Main.kt
package jp.mitibata.practice.shinchoku

import java.util.*

/**
 * 進捗どうですか?シンプル版
 * 全ての文字を変数に格納して、毎回正規表現のマッチングをかけている。
 */
fun main(args: Array<String>) {
    val words = arrayOf("進捗", "どう", "です", "か")
    val rand = Random()
    val regex = Regex(""".*進捗どうですか$""")

    val aori = """
    |
    |_人人人人人人人_
    |>進捗どうですか<|
    | ̄Y^^Y^^Y^^Y^^Y^ ̄
    """.trimMargin()

    var buffer = ""

    loop@while (true) {
        when (regex.matches(buffer)) {
            true -> {
                println(buffer)
                println(aori)
                println("${buffer.length}文字で煽られました")
                break@loop
            }
            false ->  buffer += words[rand.nextInt(words.size)]
        }
    }
}

こんな風にKotlinに煽られます。やったね。

かです進捗進捗ですどうですどう進捗どうかかかどうどうか進捗どうですか

_人人人人人人人_
>進捗どうですか<|
 ̄Y^^Y^^Y^^Y^^Y^ ̄
34文字で煽られました

Java

同じ様な動作をするJavaも書きました。
複数行の文字列リテラルやら型推論が無いところに、ちょっとしたつらさがありますね。

Main.java
package jp.mitibata.practice.shinchoku;

import java.util.Random;
import java.util.regex.Pattern;

/**
 * 進捗どうですか?Java版
 */
public class Main {
    public static void main(String[] args){
        String[] words = {"進捗", "どう", "です", "か"};
        Random rand = new Random();
        Pattern pattern = Pattern.compile(".*進捗どうですか$");

        String aori = "_人人人人人人人_\n>進捗どうですか<\n ̄Y^^Y^^Y^^Y^^Y^ ̄";

        String buffer = "";
        while (true) {
            if(pattern.matcher(buffer).matches()) {
                System.out.println(buffer);
                System.out.println(aori);
                System.out.println(buffer.length() + "文字で煽られました");
                break;
            } else {
                buffer += words[rand.nextInt(words.length)];
            }
        }
    }
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2