Enviar pesquisa
Carregar
Java Quine Golf
•
1 gostou
•
1,476 visualizações
T
Taku Miyakawa
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 12
Baixar agora
Baixar para ler offline
Recomendados
Kink の宣伝
Kink の宣伝
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
Recomendados
Kink の宣伝
Kink の宣伝
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
ji-1. Java を使ってみる
ji-1. Java を使ってみる
kunihikokaneko1
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
Introduction of Python
Introduction of Python
Tomoya Nakayama
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマー
kunihikokaneko1
PWA aruaru
PWA aruaru
n_harada
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
Toshio Ehara
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
Kentaro Ohkouchi
FEST-SwingでFestival!
FEST-SwingでFestival!
You Osaki
FEST-SwingでFestival!
FEST-SwingでFestival!
You Osaki
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
競プロでGo!
競プロでGo!
鈴木 セシル
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
Uehara Junji
Mais conteúdo relacionado
Destaque
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Destaque
(7)
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
擬似乱数生成器の評価
擬似乱数生成器の評価
Hadoop jobbuilder
Hadoop jobbuilder
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Semelhante a Java Quine Golf
ji-1. Java を使ってみる
ji-1. Java を使ってみる
kunihikokaneko1
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
Introduction of Python
Introduction of Python
Tomoya Nakayama
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマー
kunihikokaneko1
PWA aruaru
PWA aruaru
n_harada
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
Toshio Ehara
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
Kentaro Ohkouchi
FEST-SwingでFestival!
FEST-SwingでFestival!
You Osaki
FEST-SwingでFestival!
FEST-SwingでFestival!
You Osaki
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
競プロでGo!
競プロでGo!
鈴木 セシル
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
Uehara Junji
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
第5回勉強会
第5回勉強会
Mugen Fujii
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
Masatoshi Tada
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Hisateru Tanaka
Quineはじめました
Quineはじめました
satos___jp
Semelhante a Java Quine Golf
(20)
ji-1. Java を使ってみる
ji-1. Java を使ってみる
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Introduction of Python
Introduction of Python
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマー
PWA aruaru
PWA aruaru
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
FEST-SwingでFestival!
FEST-SwingでFestival!
FEST-SwingでFestival!
FEST-SwingでFestival!
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
競プロでGo!
競プロでGo!
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
第5回勉強会
第5回勉強会
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Quineはじめました
Quineはじめました
Java Quine Golf
1.
Java Quine Golf @miyakawa_taku
(宮川 拓) 2013-05-13 LT at JJUG CCC 2013 Spring
2.
なにそれ • Quine – 「自分と同じプログラム」を出力するプログラム •
Golf – プログラムを短く書くゲーム • Java Quine Golf – 「自分と同じプログラム」を出力する Java プログ ラムを短く書くゲーム 1
3.
Q. 何の役に立つのか? 2
4.
A. たのしめる 3
5.
Q1. 素直な実装 4 class Q{public static
void main(String[]a){String s="class Q{public static void main(String[]a){String s=%c%s%1$c;System.out.printf(s,34,s);}}";System.out.p rintf(s,34,s);}} $ java Q class Q{public static void main(String[]a){String s="class Q{public static void main(String[]a){String s=%c%s%1$c;System.out.printf(s,34,s);}}";System.out.p rintf(s,34,s);}} 172 バイト
6.
改善のアイディア • main メソッドを使いたくない –
「public static void main(String[] s)」で 35 バイト – 文字列中にも登場するから、これだけで 70 バイト • main の前に処理したい 5
7.
Q2. main に代って static
イニシャライザ 6 class Q{static{String s="class Q{static{String s=%c%s%1$c;System.out.printf(s,34,s);System.exit(0);} }";System.out.printf(s,34,s);System.exit(0);}} 146 バイト
8.
Q3. enum 定数のイニシャライザ 7 enum Q{C;{String
s="enum Q{C;{String s=%c%s%1$c;System.out.printf(s,34,s);System.exit(0);} }";System.out.printf(s,34,s);System.exit(0);}} 136 バイト
9.
つぶやけた 8
10.
Java 7 • Oracle
Java 7 の実装では Q2 と Q3 が動か なくなった 9 $ java Q エラー: メイン・メソッドがクラスQで見つかりません。次の ようにメイン・メソッドを定義してください。 public static void main(String[] args)
11.
なんでだ • 起動の際、クラスのメンバを初期化する前に、 main メソッドが存在するかどうか確かめるよ うになったため •
こっちの方が正しい動きらしい 10
12.
くっそー 11
Baixar agora