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위가 됐어.



오늘은 이상~~!

좋은 웹페이지 즐겨찾기