PPAP + Kotlin

12539 단어 PPAPKotlin
함수형 언어를 배우고 싶은데 좋은 소재가 없어서...
(결과적으로 PPAP로...)

함수형 언어


아이디어는 여기 참고하세요.
우선 생각에서 함수형 프로그래밍을 이해하다
자신에게 좀 어렵다 w

먼저 설치 및 실행


PPAP.kts
import java.util.*

val ppap = listOf("I have a ✏️", "I have a 🍍", "I have an 🍎", "I have a ✏️")

fun getPPAP(count : Int) : String {
    println(ppap[count])
    return ppap[count]
}

fun compile() {
    var list = mutableListOf("")
    while(true) {
        list.add(getPPAP(Math.abs(Random().nextInt() % 3)))
        if( list.takeLast(4).equals(ppap) ) {
            println("PEN_PINEAPPLE✏️🍍 , APPLE_PEN✏️🍎")
            break
        }
    }
}

compile()
나는 이것이 함수형이라고 할 수 있는지 모르겠다.
대상 w 보이기

list

val ppap = listOf("I have a ✏️", "I have a 🍍", "I have an 🍎", "I have a ✏️"
펜은 반복해서 사용하기 때문에 하나만 생각하면 되는데 나중에 쓸 거니까 4개를 정의했어요.

getPPAP

fun getPPAP(count : Int) : String {
    println(ppap[count])
    return ppap[count]
}
그렇군요.
방법 내에서 구성원 변수를 변경하면 함수형이 아닌 것 같은데...멤버 변수만 참조

compile

fun compile() {
    var list = mutableListOf("")
    while(true) {
        list.add(getPPAP(Math.abs(Random().nextInt() % 3)))
        if( list.takeLast(4).equals(ppap) ) {
            println("PEN_PINEAPPLE✏️🍍 , APPLE_PEN✏️🍎")
            break
        }
    }
}
빈list,add 하러 갔어요.
(랜덤 수는 0~2 사이에서 출력됩니다. 음수도 나타날 수 있으므로 절대값으로 설정합니다.)
마지막부터 4개를 조사해서 PPAP라면 끝이에요.
이게 끝난다는 판단을 간단하게 하기 위해서 위와 같은 ppaplist를 만들었어요.

결과

I have a ✏️
I have an 🍎
I have an 🍎
I have an 🍎
I have a 🍍
I have a 🍍
I have a ✏️
I have a ✏️
I have a ✏️
I have a 🍍
I have an 🍎
I have a ✏️
PEN_PINEAPPLE✏️🍍 , APPLE_PEN✏️🍎
[Finished in 3.1s]
응!느낌이 좋다

업그레이드


PPAP_fixed.kts
import java.util.*

Random().let {
    val ppap = listOf("✏️", "🍍", "🍎", "✏️")
    generateSequence { ppap[Math.abs(it.nextInt() % 3)] }
            .fold(mutableListOf(""), { a, b ->
                println("I have " + (if (b.equals("🍎")) "an " else "a ") + b)
                a.add(b)
                if (a.takeLast(4).equals(ppap)) {
                    println(ppap.reduce { a, b -> a + b })
                    return@let
                }
                a
            })
}

generateSequence


간단히 말하면, 너는 나에게 다음 값을 줄 것이다
이번에는 "papp[(乱数)]끊임없이 너에게 건네주는 것 같아"

fold


이미지는 매개변수 포함 reduce
fold(mutableListOf(""), { a, b -> a}
이번 거는 쉽게 알 수 있는 그런 느낌이에요.
초기 값은 비어 있음 list mutableListOf("")매개변수에 빈 목록 전달a매개 변수 b 는 아까 papp[(乱数)] 문자를 전달합니다.
반환값으로 마지막a

삼원 연산자


자바에서 쉽게 사용할 수 있는 세 가지 연산자는 Kotlin에 없는 것 같아요.
b.equals("🍎") ? "an " : "a "
// b = "🍎" -> an
// b != "🍎" -> a
Kotlin은 if가 표현식이므로 세 가지 연산자가 없음을 나타냅니다...
if (b.equals("🍎")) "an " else "a "

끝내다

if (a.takeLast(4).equals(ppap)) {
    println(ppap.reduce { a, b -> a + b })
    return@let
}
return@let 반환Random().let 종료

감상


업그레이드할 때 먼저 코드를 참고하여 이해하는 방법을 취했다
알아봤지만 Random().let{}let이해의 착오가 있을지도 모르지만, 처리는 추적할 수 있으니 정말 다행이다

참고 자료


Kotlin 목록 작업 함수 요약
Kotlin의 갈대
일본 갈대 Kotlin

좋은 웹페이지 즐겨찾기