যতটা সম্ভব ভাষাগুলিতে স্প্যাম জেনারেটরের একটি শৃঙ্খলা তৈরি করুন


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

@ এমনিপ হুম, আমি সত্যিই এটি কখনই নির্দিষ্ট করেছিলাম না: -পি আমি মনে করি আপনি এটি করতে পারেন এবং চরিত্রগুলি সংরক্ষণ করে যদি নিয়মগুলি বাঁকতে পারেন
ডোরকনব

উত্তর:


5

পিএইচপি 5.5 -> রুবি 2.0 -> পাইথন 2.7 -> লুয়া -> সি # -> জাভা -> পিডিএফটেক্স -> গল্ফস্ক্রিপ্ট 855/8 ^ 2 = 13.359375

মূল ধারণাগুলি হ'ল:

  1. সমস্ত প্রোগ্রামিং ভাষায় এন + 1 তম ভাষা তৈরি করার পক্ষে যুক্তি তৈরির পরিবর্তে এটি কেবল একবার করুন এবং প্রতিটি প্রোগ্রামিং ভাষার মূল র্যান্ডম এবং স্টাডআউট লেখার সুবিধা ব্যবহার করুন
  2. টেমপ্লেট জেনারেটরকে সংক্ষিপ্ত করতে, কেবল zLib দিয়ে সংকুচিত করুন। এই জেনারেটরটিকে দ্বিতীয় ভাষা করুন
  3. পিএইচপিটিকে প্রথম ভাষা হিসাবে ব্যবহার করুন, কারণ এতে অন্তর্নির্মিত 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 সংস্করণটি কোথায় (যেমন পিএইচপি কোডের ফলাফল, যা রুবি সংস্করণ)

বেস 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

$ 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 এর ভিতরে থাকবে will আমি আশা করি এটি এখনও ঠিক আছে)

$ 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. দেখে মনে হচ্ছে পিএইচপি হেক্স কোড এএফ এবং 96 ব্যতীত স্ট্রিং লিটারালগুলিতে বাইনারি ডেটা সহ বেশ ক্ষমা করছে why কেন জিজ্ঞাসা করবেন না।

  2. আমি খুব সহজে পার্ল এবং সি ++ 11 কোড যুক্ত করতে পারতাম (তারা উভয়ই কাঁচা স্ট্রিংয়ের আক্ষরিক সমর্থন করে) তবে 8 টি 10 ​​এর চেয়ে বেশি গোল সংখ্যা :)

  3. মানগুলির বন্টন সমান নয়, কারণ প্রথম উপাদানটি প্রায়শই বেশি পরে আসে। মন্তব্য অনুযায়ী এটি ঠিক করা উচিত।

  4. প্রাথমিক কোডটি নিম্নলিখিত পিএইচপি 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;";

(আপনি সম্ভাব্যভাবে অন্যান্য চ্যালেঞ্জের জন্য পিএইচপি সমাধানগুলি জিলবাইজ করতে এই কোডটি ব্যবহার করতে পারেন)


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].")'

পার্ল প্রোগ্রাম (আমার প্রথম! !- পি) ফলাফলগুলি:

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.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.