🎍

遊びながらプログラミングの勉強ができるコレクション

2020/12/26に公開

社内のDojo で喋ったネタ。

Code Golfとは

コードゴルフはコンピュータプログラミング・コンテストの一種。参加者は与えられたアルゴリズムを、可能な限りもっとも短いソースコードで記述することを競う[1]。バイナリサイズではなく、ソースコードの文字数がスコアとなる
Wikipedia

例えばFizzBuzz問題のCodeGolf解説がこちら
Code Golf

例として 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." の歌詞を表示するプログラムを書け」
https://code.golf/99-bottles-of-beer#java

等など、アドベントカレンダーの中で99本のビールでCode Golf というやつを少し書いたが同じく、冬休みの自学自習のお供に良さそうなプログラミングゲーム的課題。

CodeGolf

FizzBuzz

https://code.golf/fizz-buzz#java

基本

https://rosettacode.org/wiki/FizzBuzz#Java

public class FizzBuzz {
    public static void main(String[] args) {
        for (int number = 1; number <= 100; number++) {
            if (number % 15 == 0) {
                System.out.println("FizzBuzz");
            } else if (number % 3 == 0) {
                System.out.println("Fizz");
            } else if (number % 5 == 0) {
                System.out.println("Buzz");
            } else {
                System.out.println(number);
            }
        }
    }
}

CodeGolf

public class FB{
	public static void main(String[] args) {
		String r="";
		for (int n = 1; n <= 100; n++) {
	            if (n % 15 == 0) {
	                r="FizzBuzz";
	            } else if (n % 3 == 0) {
	                r="Fizz";
	            } else if (n % 5 == 0) {
	                r="Buzz";
	            } else {
	                r=""+n;    
	            };
	            System.out.println(r);
	        }}}

からの

class FB{public static void main(String[] a) {String r="";for(int n=1;n<=100;n++){if (n%15==0){r="FizzBuzz";} else if (n % 3 == 0){r="Fizz";}else if(n%5==0){r="Buzz";} else{r=""+n;};System.out.println(r);}}}

で、私は今84位に居る。という感じ。
image.png

Christmas Tree

https://code.golf/christmas-trees#java

CodeGolf

class ChristmasTree {
public static void main(String[] args) {
String out="";	
for(int i=3;i<10;i++) {
switch (i) {
case 3:
out="   *\n  ***\n *****\n   *  \n";
break;   
case 4:
out="    *\n   ***\n  *****\n *******\n    *\n";
break;
case 5:
out="     *\n    ***\n   *****\n  *******\n *********\n     *\n";
break;
case 6:
out="      *\n     ***\n    *****\n   *******\n  *********\n ***********\n      *\n";
break;
case 7:
out="       *\n      ***\n     *****\n    *******\n   *********\n  ***********\n *************\n       *\n";
break;
case 8:
out="        *\n       ***\n      *****\n     *******\n    *********\n   ***********\n  *************\n ***************\n        *\n";
break;
case 9:
out="         *\n        ***\n       *****\n      *******\n     *********\n    ***********\n   *************\n  ***************\n *****************\n         *\n";
break;}System.out.println(out);}}}

その他

https://forum.freecodecamp.org/

等、言語の習得やアルゴリズムの学習に最適 オンラインジャッジサイト一覧(2020/ 3 版) 参照のこと。

CodeWars
CodinGame
Codingame

フロントエンドの練習に良い
Codepen
javascriptのチュートリアル
javascript.info

LeetCode
https://leetcode.com/explore/
問題数 900以上 (Problem set. 他にもいろんな問題があるよう)
Google, Amazon, Appleなどの大手企業で出されたという問題があるらしい

Peking University Judge online
30secondsofcode

https://codepip.com/
https://cssgridgarden.com/#ja
https://yukicoder.me/problems/16
https://github.com/flukeout/css-diner
https://flukeout.github.io/

https://css-challenges.com/

https://qiita.com/BJCRobot/items/e661d5d73d5fdbf199ea

そのうちもっと試したらQiitaに書くかもしれない。

Discussion