Collection of freaky sources written on C# (mostly quines in different forms).
More detail description is available on Russian:
- С днем программиста !! атсиммаргорп менд С (Квайн-палиндром).
- Звездные войны в исходном коде.
- Интересности из мира квайнов (100 языков, радиационно-устойчивый, часы, змейка).
- Пишем квайн-полиглот-палиндромы в честь дня 2^2^3.
Used data from http://asciimation.co.nz/ by Simon Jansen © 1997 - 2011. One compilation per one frame.
One compilation per one second.
Use arrow keys to change direction and move snake. Game can be either completed or failed :)
The quine that compilied both in C# and Java.
The quine that compilied both in C# and Java and have a palindromic format (PalindromePolyglotQuine.cs.java):
/**///\u000A\u002F\u002A using System;//\u002A\u002F class Program{public static void//\u000A\u002F\u002A Main//\u002A\u002Fmain (String[]z){String s="`**?`@#_^using System;?_#^class Program{public static void?@#_^Main?_#main^(String[]z){String s=!$!,t=s;int i;int[]a=new int[]{33,94,38,64,35,95,96,63,36};String[]b=new String[]{!&!!,!&n!,!&&!,!&@!,!&#!,!&_!,!`!,!?!,s};for(i=0;i<9;i++)t=t.?@#_^Replace?_#replace^(!!+(char)a[i],b[i]);t+='*';for(i=872;i>=0;i--)t=t+t?@#_^[i];Console.Write?_#.charAt(i);System.out.printf^(t);}}/",t=s;int i;int[]a=new int[]{33,94,38,64,35,95,96,63,36};String[]b=new String[]{"\"","\n","\\","\\u000A","\\u002F","\\u002A","/","//",s};for(i=0;i<9;i++)t=t.//\u000A\u002F\u002A Replace//\u002A\u002Freplace (""+(char)a[i],b[i]);t+='*';for(i=872;i>=0;i--)t=t+t//\u000A\u002F\u002A [i];Console.Write//\u002A\u002F.charAt(i);System.out.printf (t);}}/*/}};)t( ftnirp.tuo.metsyS;)i(tArahc.F200u\A200u\//etirW.elosnoC;]i[ A200u\F200u\A000u\//t+t=t)--i;0=>i;278=i(rof;'*'=+t;)]i[b,]i[a)rahc(+""( ecalperF200u\A200u\//ecalpeR A200u\F200u\A000u\//.t=t)++i;9<i;0=i(rof;}s,"//","/","A200u\\","F200u\\","A000u\\","\\","n\",""\"{][gnirtS wen=b][gnirtS;}63,36,69,59,53,46,83,49,33{][tni wen=a][tni;i tni;s=t,"/}};)t(^ftnirp.tuo.metsyS;)i(tArahc.#_?etirW.elosnoC;]i[^_#@?t+t=t)--i;0=>i;278=i(rof;'*'=+t;)]i[b,]i[a)rahc(+!!(^ecalper#_?ecalpeR^_#@?.t=t)++i;9<i;0=i(rof;}s,!?!,!`!,!_&!,!#&!,!@&!,!&&!,!n&!,!!&!{][gnirtS wen=b][gnirtS;}63,36,69,59,53,46,83,49,33{][tni wen=a][tni;i tni;s=t,!$!=s gnirtS{)z][gnirtS(^niam#_?niaM^_#@?diov citats cilbup{margorP ssalc^#_?;metsyS gnisu^_#@`?**`"=s gnirtS{)z][gnirtS( niamF200u\A200u\//niaM A200u\F200u\A000u\//diov citats cilbup{margorP ssalc F200u\A200u\//;metsyS gnisu A200u\F200u\A000u\///**/Quine generation consists of several steps:
- Code generation
- Data generation
- Code minification
- Code formatting
- Quine genration
At first next quine template is used:
using System; using System.Text; using System.Collections.Generic; namespace Asciimation_1_3 { class Program { /*#Asciimation_1_3*/ /*Asciimation_1_3#*/ /*#HuffmanTree*/ /*HuffmanTree#*/ /*#HuffmanRleDecode2*/ /*HuffmanRleDecode2#*/ /*#Enums*/ /*Enums#*/ /*#Utils*/ /*Utils#*/ static string Data = /*%Data_1_3*/""/*Data_1_3%*/; static int CurrentFrame = /*$CurrentFrame*/0/*CurrentFrame$*/; static void Main() { var output = Decompress_v_1_3(Data, CurrentFrame++); if (CurrentFrame == 3591) CurrentFrame = 3590; /*@*/ } } } /*$Output_1_3$*/Comments with special char combinations named as "markers". Marker is used for code extraction or generation from different sources. Marker can have one of the following types:
- Code copying from files for code blocks marked as
/*#...*/… /*...#*/. - Data generation for data blocks marked
/*%...*/… /*...%*/. - Quine parameters (introns) marked as
/*$...*/… /*...$*/. - Place, where quine should be printed marked as
/*@*/.
One can generate quine via developed GUI. But prepared asciimation code is available here: AsciimationQuine_1_3.7z. It's possible to compile one frame or entire animation with the following scripts:
echo off :LOOP "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" "Asciimation_1_3.cs" "Asciimation_1_3.exe" > "Asciimation_1_3.cs" type "Asciimation_1_3.cs" goto LOOP :ENDwhile ($true) { &"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" "Asciimation_1_3.cs" ./"Asciimation_1_3.exe" > "Asciimation_1_3.cs" type "Asciimation_1_3.cs" }while : do mcs "Asciimation_1_3.cs" mono "Asciimation_1_3.exe" > "Asciimation_1_3.cs" cat "Asciimation_1_3.cs" doneQuines, Palidrome, Polyglot and other program tests available in FreakySource.Tests project. Polyglot quine tests require installed Java.
- Code for code, data, quine generation under the Apache 2.0 License.
- Generated source codes under the MIT License.
Enjoy!
___ _____ _____ ^ ^ _ _ ___ _____ ^ _____ __ _ / _ \ | ___| | ___| | | | | | \ / | / _ \ |_ _| | | | _ | | \| | / /_\ \ |___ | | |___ | | | | | \/ | / /_\ \ | | | | | |_| | | |\ | /_______\ |_____| |_____| |_| |_| |_|\/|_| /_______\ |_| |_| |_____| |_| \_| _____ _ _ ^ __ _ _____ | _ | | | | | | | | \| | | ___| | |_| | | |_| | | | | |\ | | __| |_____ \ |_____| |_| |_| \_| |_____| \/ 

