PPAP + Kotlin
(결과적으로 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
Reference
이 문제에 관하여(PPAP + Kotlin), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hmhmsh/items/a5529299dc5a66c2927e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)