99개의 맥주에서 Code Golf
99 Bottles of Beer라는 유명한 제목이 있는 것 같아서 오늘은 그 Code Golf의 이야기.
Code Golf란?
코드 골프는 컴퓨터 프로그래밍 콘테스트의 일종. 참가자는 주어진 알고리즘을 가능한 가장 짧은 소스 코드로 기술하는 것을 경쟁한다 [1]. 바이너리 크기가 아닌 소스 코드의 문자 수가 점수입니다.
Wikipedia
예를 들어 FizzBuzz 문제의 Code Golf 해설이 여기
입니다만, Code Golf의 제목이 대량으로 있는 것을 발견했다.
그것이 이것. htps : // 여기. 고 lf/
99 bottles of beer
Display the complete lyrics for the song: 99 Bottles of Beer on the Wall.
→「"99 Bottles of Beer on the Wall."의 가사를 표시하는 프로그램을 쓸 수 있다」라고 하는 것이군요.
Beer.java
import java.text.MessageFormat;
class Beer {
static String bottles(int n) {
return MessageFormat.format("{0,choice,0#No more bottles|1#One bottle|2#{0} bottles} of beer", n);
}
public static void main(String[] args) {
String bottles = bottles(99);
for (int n = 99; n > 0; ) {
System.out.println(bottles + " on the wall");
System.out.println(bottles);
System.out.println("Take one down, pass it around");
bottles = bottles(--n);
System.out.println(bottles + " on the wall");
System.out.println();
}
}
}
라든지 쓴다. 안직하게는 이하와 같은 느낌.
포인트로서는 가사의 마지막 쪽은
bottles
는 아니고 bottle
그러나 No more 이하의 가사를 어떻게 처리할까입니다.Beer.java
import java.text.MessageFormat;
class Beer {
static String bottles(int n) {
return MessageFormat.format("{0,choice,0#no more bottles|1#1 bottle|2#{0} bottles} of beer", n);
}
public static void main(String[] args) {
String bottles = bottles(99);
for (int n = 99; n > 0; ) {
System.out.println(bottles + " on the wall, " + bottles+".");
bottles = bottles(--n);
System.out.println("Take one down and pass it around, "+ bottles + " on the wall.");
System.out.println();
}
System.out.println("No more bottles of beer on the wall, no more bottles of beer.");
System.out.println("Go to the store and buy some more, 99 bottles of beer on the wall.");
}
}
실행
라든지, 제목은 클리어할 수 있지만 랭크 인하기 위해서는 좀 더 깎아야 한다.
결과
Beer.java
import java.text.MessageFormat;
class Beer {
static String b(int n) {
return MessageFormat.format("{0,choice,0#no more bottles|1#1 bottle|2#{0} bottles} of beer", n);
}
public static void main(String[] args) {
String b = b(99);
for (int n = 99; n > 0;) {
System.out.println(b + " on the wall, " + b+".");
b= b(--n);
System.out.println("Take one down and pass it around, "+ b+ " on the wall.\n");
}
System.out.println("No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.");}
}
라든지 작은 현명한 느낌에 깎으면, 우선 14위가 됐어.
오늘은 이상~~!
Reference
이 문제에 관하여(99개의 맥주에서 Code Golf), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/e99h2121/items/758709a0cf9ffe0486ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)