अधिक से अधिक भाषाओं में स्पैम जनरेटर की एक श्रृंखला बनाएं


10

चैलेंज का लक्ष्य अधिक से अधिक भाषाओं में समाधान लिखना है। अपनी प्रोग्रामिंग बहुभाषिकता दिखाएं!

इस चुनौती में, आप एक प्रोग्राम बनाएंगे जो एक इनपुट बीज-पाठ को देखते हुए स्पैम संदेश उत्पन्न करेगा। उदाहरण के लिए, इनपुट दिया गया

[Thank you/Wow/Great], this [blog/post/writing] [gives/provides/delivers] [great/excellent/wonderful/superior] [content/information/data]. You [may/could] [find/get/retrieve] [similar/related] [content/information/data] at spammysite.com.

एक संभावित आउटपुट हो सकता है

Thank you, this writing delivers excellent data. You may find similar content at spammysite.com.

(विचार https://security.stackexchange.com/q/37436/29804 से )

हालांकि एक पकड़ है! आपको एक प्रोग्राम को एक अलग भाषा में आउटपुट करना होगा । यह प्रोग्राम, जब चलाया जाता है, तो स्पैम टेक्स्ट और एक प्रोग्राम को एक अलग भाषा में आउटपुट करेगा, जो स्पैम टेक्स्ट और एक प्रोग्राम को एक अलग भाषा में आउटपुट करेगा ...

आपका स्कोर होगा character count / (number of languages ^ 2)

उदाहरण के लिए, मैं एक रूबी कार्यक्रम कर सकता था। यह इनपुट बीज-पाठ को इनपुट के रूप में लेगा, और यादृच्छिक स्पैम पाठ और पायथन प्रोग्राम को आउटपुट करेगा।

इस पायथन प्रोग्राम को चलाने (बिना इनपुट के), यह एक और यादृच्छिक स्पैम टेक्स्ट और एक पर्ल प्रोग्राम का उत्पादन करेगा।

इस पर्ल प्रोग्राम (कोई इनपुट नहीं) को चलाने पर, यह एक और रैंडम स्पैम टेक्स्ट को आउटपुट करेगा।

इस उदाहरण में, मेरा स्कोर 9 से विभाजित मूल रूबी कार्यक्रम की लंबाई होगी (मेरी 3 भाषाएं हैं, और 3 ^ 2 9 है)।

अन्य विविध चीजें:

  • आपको कम से कम 2 विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करना चाहिए।
  • कृपया आउटपुट के प्रत्येक प्रोग्राम को सूचीबद्ध करें। इस तरह यदि किसी के पास सभी भाषाएँ नहीं हैं, तो भी वे अपने स्रोतों को देख सकते हैं। आप इस संक्षिप्त उदाहरण पाठ का उपयोग कर सकते हैं: [Please/Kindly] [visit/see] my [site/blog].या आप किसी प्लेसहोल्डर (जैसे {insert text here}) का उपयोग कर सकते हैं ।
  • आप मान सकते हैं कि []/.,कुछ चीजों को सरल बनाने के अलावा कोई गैर-अल्फ़ान्यूमेरिक वर्ण नहीं होगा ।
  • भाषाओं के विभिन्न संस्करण अलग-अलग भाषाओं के रूप में नहीं गिने जाते हैं (उदाहरण पायथन 2 == पायथन 3)।
  • यह पूरी तरह से यादृच्छिक होना चाहिए, यानी अनुमानित नहीं और हर रन के लिए एक अलग संयोजन तैयार करना। यह प्रत्येक संयोजन को रनों की अनियमित मात्रा में आउटपुट करने में सक्षम होना चाहिए।
  • चूंकि यह साथ-साथ , इसलिए सबसे छोटा समग्र स्कोर ( charcount / (langs ^ 2)) जीत जाएगा।

क्या यह ठीक है अगर वितरण एक समान नहीं है, उदाहरण के लिए यदि पहला शब्द दूसरे की तुलना में अधिक बार चुना जाता है?
मनिएप

@mniip हम्म, मैं वास्तव में कभी नहीं निर्दिष्ट किया है कि: -PI मान लें कि क्या करना है और नियमों मोड़ सकता है अगर यह पात्रों की बचत होती है
दरवाज़े

जवाबों:


5

PHP 5.5 -> रूबी 2.0 -> पायथन 2.7 -> लूआ -> C # -> जावा -> PdfTeX -> गोल्फस्क्रिप्ट 855/8 ^ 2 = 13.359375

मुख्य विचार थे:

  1. वास्तव में सभी प्रोग्रामिंग भाषाओं में n + 1th भाषा बनाने के लिए तर्क बनाने के बजाय यह केवल एक बार करते हैं, और केवल प्रत्येक प्रोग्रामिंग भाषा की मूल यादृच्छिक और stdout लेखन सुविधाओं का उपयोग करते हैं
  2. टेम्पलेट जनरेटर को छोटा करने के लिए, बस इसे zLib के साथ संपीड़ित करें। इस जनरेटर को दूसरी भाषा बनाएं
  3. पहली भाषा के रूप में PHP का उपयोग करें, क्योंकि इसमें बिल्ट-इन zLib डेकोम्प्रेसर है

तो प्रारंभिक कोड है:

<?php $x=file_get_contents("php://stdin");echo preg_replace_callback("/\[(.*?)\]/",function($m){$r=explode("/",$m[1]);return $r[array_rand($r)];},$x).gzuncompress("BINARY_DATA")."__END__\n".$x;

BINARY_DATAटेम्पलेट जनरेटर का gzcompressed संस्करण कहां है (उदाहरण के लिए php कोड, जो माणिक संस्करण है)

बेस 64 में पूरा प्रारंभिक कोड (डिकोडिंग के बाद 855 बाइट्स होना चाहिए):

PD9waHAgJHg9ZmlsZV9nZXRfY29udGVudHMoInBocDovL3N0ZGluIik7ZWNobyBw
cmVnX3JlcGxhY2VfY2FsbGJhY2soIi9cWyguKj8pXF0vIixmdW5jdGlvbigkbSl7
JHI9ZXhwbG9kZSgiLyIsJG1bMV0pO3JldHVybiAkclthcnJheV9yYW5kKCRyKV07
fSwkeCkuZ3p1bmNvbXByZXNzKCJ42o2UwXKbMBCG7zyFZj0doElV55BLiNJmmump
7aHpTA+Yg4xErA6SGCQSZ4jevZIBx3biTHywzO6y/7+fYRm5uf5zjVtOGS5XWjbY
NLWwSZzHKVx4OTa06Z/oE51iRZw6XFzV1FquXiQ/+2TEMKflKsSbViiLfFx4OTbK
puYuajpr0OUlBDmIoqrVErVUMX8I2ejWXCIvL0oejVfm0USznk0y4Fx4YWaxsUx3
Fj+0wvJkKE9mPcVCmYaX1qUpuI+wUODlgvzwjeI4XHg5NtSu8CBnOGeJNthcbsmT
NN0ToWSnHbatx1DEp3Hv/GyZ0KMyzXfaJWen4Z6aqzu7cmmRZvseknQ8c0JyT2FZ
ixKVNTUGUdRPAWOp9ce9Fgz9pEIlqc/dPhrLJf49UGqJ4g9oL1x4OTak2a79Jfl0
JXs5eiHk7AuM5d+0Mrrm+O/G/8zXVKI19hlcXAYXICqUtPgXX9sb7V15OJdzfJ72
R3uYlah2ezheG97DyTKXxQk4D1wiW+YUs64pJiRceGFm9fohFA+THM19hTd5ycDr
1nrId3mBaHtnArx/9J7izop6n99h+N0Iw4M3/JELeAlwATsIlUf4vdbUHhA8bLHP
L7R4P8FtXHhhZloNI6wJUMjeGGS0fIFgMX5EpTp5Pp9fTYGGVZ0SlW4l4/eCWn42
n8/R1qqb6oJLNLmcgpXwbtdkjU1XXHg5Ntn0RlxcvULQW17AYnsj4xWafuvG+lEc
6mf9dnD3IVQHvgjgDQxceDAwLyi8audAq3e+MR3g+O7gXHgwMJ4fxgPMR1TZ8zLc
yiDIw17YJFx4OTZPEPuBXFwMG4FiZ2GEJUJceDAw+dHiEB1cXIx1x4zAdoTlI98U
uciNR1QQ4ndQ5HdeFFZt9B9+DwFHIikuIl9fRU5EX19cbiIuJHg7

चलो परीक्षण इनपुट स्ट्रिंग के साथ सभी भाषाओं के माध्यम से चलते हैं [Thank you/Wow/Great], this is [awesome/wonderful].

पीएचपी

$ cat ti2 | php a.php
Great, this is wonderful.
d=DATA.read.chomp.split('[').map{|a|a.split(']')}.flatten.map{|a|a.split('/')}
d.each{|a|print a.sample}
puts <<"DATA"

from random import choice
import sys
#{d.map{|a|"sys.stdout.write(choice(#{a.inspect}))"}*"\n"}
print
print '''math.randomseed(os.time())
#{d.map{|a|"a=#{a.inspect.tr('[]','{}')};io.write(a[math.random(1,#{a.length})]);"}*"\n"}
print()
print([==[
public class a {
public static void Main() {
System.Random r=new System.Random();
#{d.map{|a|b=->m{m.length==1?"System.Console.Write(#{m.first.inspect});":"if (r.NextDouble()<0.5){System.Console.Write(#{m.shift.inspect});}else{"+b[m]+"};"};b[a.dup]}*"\n"}
System.Console.WriteLine();
System.Console.WriteLine(@"class a {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
#{d.map{|a|b=->m{m.length==1?"System.out.print(\"#{m.first.inspect}\");":"if (r.nextFloat()<0.5){System.out.print(\"#{m.shift.inspect}\");}else{"+b[m]+"};"};b[a.dup]}*"\n"}
System.out.println();
#{x="a";d.map{|a|b=->m{m.length==1?m.first: "\\\\\\\\ifnum500>\\\\\\\\pdfuniformdeviate1000 #{m.shift}\\\\\\\\else "+b[m]+"\\\\\\\\fi"};x=x.succ;a.length>1?"System.out.println(\"\"\\\\\\\\def \\\\\\\\opt#{x} {#{b[a.dup]}}%\"\");": ""}*"\n"}
System.out.println(""#{x="a";d.map{|a|x=x.succ;a.length>1?"\\\\\\\\opt#{x}{}": a.first}*""}"");
System.out.println();
System.out.println(""#{d.map{|a|a.length>1? "[#{a.map{|b|"'#{b}'"}*""}]#{a.length}rand=" : "'#{a.first}'"}*""}"");
System.out.println(""\\\\\\\\bye"");
}
}");
}
}
]==]);
'''
DATA
__END__
[Thank you/Wow/Great], this is [awesome/wonderful].

माणिक

$ ruby a.rb
Great, this is awesome.
from random import choice
import sys
sys.stdout.write(choice(["Thank you", "Wow", "Great"]))
sys.stdout.write(choice([", this is "]))
sys.stdout.write(choice(["awesome", "wonderful"]))
sys.stdout.write(choice(["."]))
print
print '''math.randomseed(os.time())
a={"Thank you", "Wow", "Great"};io.write(a[math.random(1,3)]);
a={", this is "};io.write(a[math.random(1,1)]);
a={"awesome", "wonderful"};io.write(a[math.random(1,2)]);
a={"."};io.write(a[math.random(1,1)]);
print()
print([==[
public class a {
public static void Main() {
System.Random r=new System.Random();
if (r.NextDouble()<0.5){System.Console.Write("Thank you");}else{if (r.NextDouble()<0.5){System.Console.Write("Wow");}else{System.Console.Write("Great");};};
System.Console.Write(", this is ");
if (r.NextDouble()<0.5){System.Console.Write("awesome");}else{System.Console.Write("wonderful");};
System.Console.Write(".");
System.Console.WriteLine();
System.Console.WriteLine(@"class a {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
if (r.nextFloat()<0.5){System.out.print(""Thank you"");}else{if (r.nextFloat()<0.5){System.out.print(""Wow"");}else{System.out.print(""Great"");};};
System.out.print("", this is "");
if (r.nextFloat()<0.5){System.out.print(""awesome"");}else{System.out.print(""wonderful"");};
System.out.print(""."");
System.out.println();
System.out.println(""\\\\def \\\\optb {\\\\ifnum500>\\\\pdfuniformdeviate1000 Thank you\\\\else \\\\ifnum500>\\\\pdfuniformdeviate1000 Wow\\\\else Great\\\\fi\\\\fi}%"");

System.out.println(""\\\\def \\\\optd {\\\\ifnum500>\\\\pdfuniformdeviate1000 awesome\\\\else wonderful\\\\fi}%"");

System.out.println(""\\\\optb{}, this is \\\\optd{}."");
System.out.println();
System.out.println(""['Thank you''Wow''Great']3rand=', this is '['awesome''wonderful']2rand='.'"");
System.out.println(""\\\\bye"");
}
}");
}
}
]==]);
'''

अजगर

$ python a.py
Great, this is wonderful.
math.randomseed(os.time())
a={"Thank you", "Wow", "Great"};io.write(a[math.random(1,3)]);
a={", this is "};io.write(a[math.random(1,1)]);
a={"awesome", "wonderful"};io.write(a[math.random(1,2)]);
a={"."};io.write(a[math.random(1,1)]);
print()
print([==[
public class a {
public static void Main() {
System.Random r=new System.Random();
if (r.NextDouble()<0.5){System.Console.Write("Thank you");}else{if (r.NextDouble()<0.5){System.Console.Write("Wow");}else{System.Console.Write("Great");};};
System.Console.Write(", this is ");
if (r.NextDouble()<0.5){System.Console.Write("awesome");}else{System.Console.Write("wonderful");};
System.Console.Write(".");
System.Console.WriteLine();
System.Console.WriteLine(@"class a {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
if (r.nextFloat()<0.5){System.out.print(""Thank you"");}else{if (r.nextFloat()<0.5){System.out.print(""Wow"");}else{System.out.print(""Great"");};};
System.out.print("", this is "");
if (r.nextFloat()<0.5){System.out.print(""awesome"");}else{System.out.print(""wonderful"");};
System.out.print(""."");
System.out.println();
System.out.println(""\\def \\optb {\\ifnum500>\\pdfuniformdeviate1000 Thank you\\else \\ifnum500>\\pdfuniformdeviate1000 Wow\\else Great\\fi\\fi}%"");

System.out.println(""\\def \\optd {\\ifnum500>\\pdfuniformdeviate1000 awesome\\else wonderful\\fi}%"");

System.out.println(""\\optb{}, this is \\optd{}."");
System.out.println();
System.out.println(""['Thank you''Wow''Great']3rand=', this is '['awesome''wonderful']2rand='.'"");
System.out.println(""\\bye"");
}
}");
}
}
]==]);

लुआ

$ lua a.lua
Great, this is wonderful.
public class a {
public static void Main() {
System.Random r=new System.Random();
if (r.NextDouble()<0.5){System.Console.Write("Thank you");}else{if (r.NextDouble()<0.5){System.Console.Write("Wow");}else{System.Console.Write("Great");};};
System.Console.Write(", this is ");
if (r.NextDouble()<0.5){System.Console.Write("awesome");}else{System.Console.Write("wonderful");};
System.Console.Write(".");
System.Console.WriteLine();
System.Console.WriteLine(@"class a {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
if (r.nextFloat()<0.5){System.out.print(""Thank you"");}else{if (r.nextFloat()<0.5){System.out.print(""Wow"");}else{System.out.print(""Great"");};};
System.out.print("", this is "");
if (r.nextFloat()<0.5){System.out.print(""awesome"");}else{System.out.print(""wonderful"");};
System.out.print(""."");
System.out.println();
System.out.println(""\\def \\optb {\\ifnum500>\\pdfuniformdeviate1000 Thank you\\else \\ifnum500>\\pdfuniformdeviate1000 Wow\\else Great\\fi\\fi}%"");

System.out.println(""\\def \\optd {\\ifnum500>\\pdfuniformdeviate1000 awesome\\else wonderful\\fi}%"");

System.out.println(""\\optb{}, this is \\optd{}."");
System.out.println();
System.out.println(""['Thank you''Wow''Great']3rand=', this is '['awesome''wonderful']2rand='.'"");
System.out.println(""\\bye"");
}
}");
}
}

सी#

$ mcs a.cs
$ mono a.exe
Thank you, this is wonderful.
class a {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
if (r.nextFloat()<0.5){System.out.print("Thank you");}else{if (r.nextFloat()<0.5){System.out.print("Wow");}else{System.out.print("Great");};};
System.out.print(", this is ");
if (r.nextFloat()<0.5){System.out.print("awesome");}else{System.out.print("wonderful");};
System.out.print(".");
System.out.println();
System.out.println("\\def \\optb {\\ifnum500>\\pdfuniformdeviate1000 Thank you\\else \\ifnum500>\\pdfuniformdeviate1000 Wow\\else Great\\fi\\fi}%");

System.out.println("\\def \\optd {\\ifnum500>\\pdfuniformdeviate1000 awesome\\else wonderful\\fi}%");

System.out.println("\\optb{}, this is \\optd{}.");
System.out.println();
System.out.println("['Thank you''Wow''Great']3rand=', this is '['awesome''wonderful']2rand='.'");
System.out.println("\\bye");
}
}

जावा

$ javac a.java
$ java a
Wow, this is wonderful.
\def \optb {\ifnum500>\pdfuniformdeviate1000 Thank you\else \ifnum500>\pdfuniformdeviate1000 Wow\else Great\fi\fi}%
\def \optd {\ifnum500>\pdfuniformdeviate1000 awesome\else wonderful\fi}%
\optb{}, this is \optd{}.

['Thank you''Wow''Great']3rand=', this is '['awesome''wonderful']2rand='.'
\bye

PdfTeX

(कोड stdout के बजाय a.pdf के अंदर होगा। मुझे आशा है कि यह अभी भी ठीक है)

$ pdftex a.tex
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012)
 restricted \write18 enabled.
entering extended mode
(./a.tex [1{/usr/local/texlive/2012/texmf-var/fonts/map/pdftex/updmap/pdftex.ma
p}] )</usr/local/texlive/2012/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.p
fb>
Output written on a.pdf (1 page, 15967 bytes).
Transcript written on a.log.
$ open a.pdf

परिणाम:

पीडीएफ़टी परिणाम

शब्दों में:

Great, this is wonderful.
['Thank you''Wow''Great']3rand=', this is '['awesome''wonderful']2rand='.'

Golfscript

$ ruby golfscript.rb a.gs
Wow, this is awesome.

टिप्पणियाँ

  1. ऐसा लगता है कि PHP, स्ट्रिंग कोडों में बाइनरी डेटा के साथ हेक्स कोड एएफ और 96 को छोड़कर काफी क्षमाशील है। यह मत पूछो कि क्यों।

  2. मैं शायद perl और C ++ 11 कोड को आसानी से जोड़ सकता था (जैसा कि वे दोनों कच्चे स्ट्रिंग शाब्दिक समर्थन करते हैं), लेकिन 8 10 से अधिक गोल संख्या है :)

  3. मूल्यों का वितरण एक समान नहीं है, क्योंकि पहला तत्व बाद के लोगों की तुलना में अधिक बार आता है। टिप्पणियों के अनुसार यह ठीक होना चाहिए।

  4. प्रारंभिक कोड वास्तव में निम्नलिखित PHP 5.5 कोड का उपयोग करके उत्पन्न किया गया था। orig.rbवास्तव में पाद लेख के बिना रूबी कोड ( __END__और बाद में संलग्न डेटा) के समान है

generator.php:

<?php
$d=file_get_contents('orig.rb');
$dc = gzcompress($d,9);
echo '<?php $x=file_get_contents("php://stdin");echo preg_replace_callback("/\\[(.*?)\\]/",function($m){$r=explode("/",$m[1]);return $r[array_rand($r)];},$x)';
?><?php
echo ".gzuncompress(\"";
for ($i=0;$i<strlen($dc);$i++) {
  switch($dc[$i]) {
  case '"':
    echo "\\\"";break;
  case "\n":
    echo "\\n";break;
  case '\\':
    echo "\\\\";break;
  case "\x00":case "\xaf":case "\x96":
    echo sprintf("\\x%02x",ord($dc[$i]));
    break;
  default:
    echo $dc[$i];
  }
}
echo "\").\"__END__\\n\".\$x;";

(आप संभावित रूप से अन्य चुनौतियों के लिए PHP समाधान zLib के लिए इस कोड का उपयोग कर सकते हैं)


1
...वाह। हे +1: यह सब मुझे कहना है है
दरवाज़े

आप लुआ में अर्धविरामों को छोड़ सकते हैं, और आप print()एक नई [==[
कॉललाइन को बदलकर

4

रूबी 1.9 -> पर्ल 5 -> पायथन 2, 227/9 = 25.22222 ...

$><<(g=gets).gsub(/\[(.*?)\]/){$1.split(?/).sample}+"say'#{g.chop}'=~s|\\[(.*?)\\]|@a=split'/',$1;$a[rand@a]|reg;say'import re,random;print re.sub(\"\\[(.*?)\\]\",lambda m:random.choice(m.group(1).split(\"/\")),\"#{g.chop}\")'"

इसके लिए आउटपुट [Please/Kindly] [visit/see] my [site/blog].:

Please see my site.
say'[Please/Kindly] [visit/see] my [site/blog].'=~s|\[(.*?)\]|@a=split'/',$1;$a[rand@a]|reg;say'import re,random;print re.sub("\[(.*?)\]",lambda m:random.choice(m.group(1).split("/")),"[Please/Kindly] [visit/see] my [site/blog].")'

पर्ल प्रोग्राम (मेरा पहला कभी !:-P) आउटपुट:

Kindly see my blog.
import re,random;print re.sub("\[(.*?)\]",lambda m:random.choice(m.group(1).split("/")),"[Please/Kindly] [visit/see] my [site/blog].")

पायथन प्रोग्राम आउटपुट:

Kindly visit my site.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.