কোনও বার্তা 50 টি বাইটে অভিনীত হবে কিনা তা ভবিষ্যদ্বাণী করুন


41

বর্ণিত এবং নীচে লিঙ্কযুক্ত তালিকা থেকে নেওয়া আমাদের সাইট চ্যাটরুমের কোনও বার্তা সমন্বিত একটি স্ট্রিংয়ের একটি ইনপুট দেওয়া হয়েছে , তবে সত্যবাদী বা মিথ্যা মানটি বার্তাটি অভিনীত হয়েছে কিনা 50 বাইট বা তার চেয়ে কম ক্ষেত্রে ভবিষ্যদ্বাণী করার চেষ্টা করছে output

আপনি যে কোনও সত্যবাদী বা মিথ্যা মান ব্যবহার করতে পারেন , তবে সেগুলি অবশ্যই অভিন্ন হবে (অর্থাত্ কেবল দুটি সম্ভাব্য আউটপুট থাকতে হবে, একটি সত্যবাদী এবং একটি মিথ্যা)। ইনপুটটি নতুন লাইনগুলি সরিয়ে কাঁচা এইচটিএমএল হিসাবে দেওয়া হবে এবং এতে অ-এএসসিআইআই ইউনিকোড অক্ষর থাকতে পারে। আপনার যদি ইউটিএফ -8 ব্যতীত অন্য কোনও ক্ষেত্রে ইনপুট প্রয়োজন হয় তবে দয়া করে আপনার উত্তরে এটি বলুন।

এই চ্যালেঞ্জটির বিজয়ী জমাটি হ'ল নীচে লিঙ্কিত তালিকার বাইরে চ্যাট বার্তার সর্বোচ্চ শতাংশ সঠিকভাবে ভবিষ্যদ্বাণী করবে। যদি দুটি প্রদত্ত জমা দেওয়ার ক্ষেত্রে সাফল্যের হার একই থাকে তবে সংক্ষিপ্ত জমাটি জিতে যাবে।

বার্তাগুলির পুরো সেটটিতে আপনার কোডটি পরিচালনা করার জন্য এবং শতাংশটি সঠিক গণনা করার জন্য দয়া করে নির্দেশাবলী সরবরাহ করুন। আদর্শভাবে, এটি কিছুটা বয়লারপ্লেট কোড হওয়া উচিত (আপনার 50 বাইটের দিকে গণনা করা হয়নি) যা ইতিবাচক পরীক্ষার কেসগুলি থেকে বেরিয়ে যায় এবং তাদের কোডগুলির মধ্যে কতটি সঠিক হয়ে যায় এবং পরে নেতিবাচক পরীক্ষার ক্ষেত্রে একই কাজ করে। (সামগ্রিক স্কোর এর পরে ম্যানুয়ালি গণনা করা যেতে পারে (correctPositive + correctNegative) / totalMessages))

যাতে আপনার কোডটি যুক্তিসঙ্গতভাবে টেস্টযোগ্য, যুক্তিসঙ্গত আধুনিক দিনের হার্ডওয়্যারটিতে চ্যাট বার্তাগুলির পুরো তালিকার জন্য এটি অবশ্যই 5 মিনিটের বা তার কমের মধ্যেই শেষ করতে হবে।

চ্যাট বার্তাগুলির পুরো তালিকাটি এখানে পাওয়া যাবে এবং এটিতে 1000 টি সর্বশেষ অভিনীত বার্তাগুলি সত্যবাদী পরীক্ষার কেস এবং 1000 টি সর্বশেষতম অরক্ষিত বার্তাগুলি মিথ্যা পরীক্ষার কেস হিসাবে গঠিত। লক্ষ করুন যে টুকরোটিতে দুটি ফাইল রয়েছে; আনস্টারহীন বার্তাগুলির জন্য প্রায় অর্ধেক নীচে স্ক্রোল করুন।


4
চ্যাটের আচরণগুলি জেনে আমি মনে করি নিম্নলিখিত পাইথটি যথেষ্ট হবে:O2
আর্কটরাস

9
পূর্ববর্তী তারকাচিহ্নিত বার্তাগুলির ইতিহাস বিবেচনা করে, রেজেেক্স, 11 বাইট:Don'?t star
ডাউনগোট

11
আপনি যদি ইনপুট অংশ হিসাবে ব্যবহারকারীকে দেওয়া হয় তবে এটি আরও সহজ হবে।
মামা ফান রোল

3
এক পর্যায়ে আমি \^
রেজেক্স

14
আমার মনে হয় আপনি পরবর্তী 1,000 বার্তা আবার এই চালানো উচিত, এবং যা এক দেখতে সত্যিই পূর্বাভাস starredness
abligh

উত্তর:


29

রেটিনা , 50 বাইট, 71.8% 72.15%

^.*([[CE;ಠ-ﭏ]|tar|ol|l.x|eo|a.u|pin|nu|o.f|"$)

@ মার্টিনব্যাটনার পরামর্শে কিছু রেজেক্স গল্ফ করার চেষ্টা করেছেন। এটি 704 তারাযুক্ত বার্তাগুলির সাথে মেলে এবং 739 টি অরক্ষিত বার্তাগুলির সাথে মেলে না।

^.*( ... )নিশ্চিত সবসময় পারেন 0 বা 1 টি মিল আছে, যেহেতু অক্ষিপট ডিফল্টরূপে ম্যাচ সংখ্যা আউটপুট করা হয়। আপনি মাল্টিলাইন m`মোডের জন্য প্রিপেন্ড করে, তারপরে চালিয়ে ইনপুট ফাইলগুলিতে প্রোগ্রামটি স্কোর করতে পারেন

Retina stars.retina < starred.txt

এবং অনুরূপ জন্য unstarred.txt


বিশ্লেষণ / ব্যাখ্যা

আমি একটি প্রোগ্রাম ব্যবহার করে উপরের স্নিপেটগুলি (এবং আরও অনেকগুলি) তৈরি করেছি, তারপরে আমি নিজে যা চাইলে সেগুলি নির্বাচন করেছি। উপরের স্নিপেটগুলি কেন কাজ করে তা সম্পর্কে এখানে কিছুটা অন্তর্দৃষ্টি:

  • C: ম্যাচ PPCG,@CᴏɴᴏʀO'Bʀɪᴇɴ
  • E: ম্যাচ @ETHproductions,@El'endiaStarman
  • ;: কারণ পরীক্ষার কেসগুলি এইচটিএমএল, এটি মেলে &lt;এবং&gt;
  • ಠ-ﭏ: ইউনিকোডের বেশ কয়েকটি অক্ষর মেলে, সর্বাধিক সুস্পষ্টভাবে ಠ_ಠএবং এর জন্য@Doorknob冰
  • tar: ম্যাচ বৈচিত্র star, @El'endiaStarman(আবার) এবং gravatarযা oneboxes নতুন পোস্ট বট পোস্ট করেছে প্রদর্শিত
  • ol: মিলগুলি rel="nofollow"যা প্রচুর লিঙ্ক এবং ওয়ানবক্সে রয়েছে
  • l.x: ম্যাচ @AlexA.,@trichoplax
  • eo: মূলত মেলে people, তবে তিনটি ক্ষেত্রেও রয়েছে@Geobits
  • a.u: প্রধানত সাথে মিলে যায় graduation, status, featureএবংabuse
  • pin: ম্যাচ pingএবং শব্দ শেষ হয় pingpineappleওভারফিটের উদাহরণ হিসাবে কয়েকটি আলোচনায় কয়েকটি পোস্টও মেলে ।
  • nu: শব্দের মিশ্র ব্যাগের সাথে মেলে, এর মধ্যে সবচেয়ে সাধারণ number
  • o.f: ম্যাচ golf,conf(irm|use)
  • "$: একটি শেষ অক্ষর হিসাবে একটি ডাবল উদ্ধৃতি মেলে @phase He means "Jenga."

[বিশেষ কিছুই হয় - আমি শুধু একটি অক্ষর অবশিষ্ট তাই আমি আমি আরও একটি ক্ষেত্রে মেলে এটা ব্যবহার করতে পারে মূর্ত ছিল।


(আমি এখনও টেস্টিং কোডটি পোস্ট করি নি কারণ মনে হচ্ছে এটি ধীরে ধীরে চলতে শুরু করেছে, এবং আমি তা খুঁজে বের করতে চাই কারণ এটি এখন অনেক দেরি হয়ে গেছে।)
Sp3000

1
প্রতিটি পরীক্ষার ক্ষেত্রে একবার রেটিনা কার্যকর করতে অনেক সময় লাগবে। মাল্টি-লাইন মোড দাবি করা স্কোরটি তাত্ক্ষণিকভাবে রিপোর্ট করে।
ডেনিস

@ ডেনিস ধন্যবাদ, আমি এটি করতে পেরেছিলাম তা পুরোপুরি ভুলে গিয়েছিলাম।
Sp3000

3
LOL, এখন আমার নাম একটি তারকা চুম্বক?
ETH প্রোডাকশনগুলি

18

জাভাস্ক্রিপ্ট ES6, 50 বাইট, 71.10%

670 তারকাযুক্ত এবং 752 নন-তারাযুক্ত সঠিকভাবে সনাক্ত করে।

x=>/ .[DERv]|tar|a.u|l.x|<i|eo|ol|[C;ಠ]/.test(x)

এখন 70% বাধা পেরিয়ে, এবং রেটিনা ব্যতীত সবাইকে মারধর!

trueবার্তায় এই জিনিসগুলির মধ্যে যদি কোনও থাকে তবে ফিরে আসে :

  • একটি শব্দ যার দ্বিতীয় চিঠি D, E, R, অথবা v;
  • tar(সাধারণত star);
  • aএবং uএর মাঝখানে একটি চরের সাথে;
  • lএবং xএর মাঝে একটি চরের সাথে (সাধারণত alex);
  • ইটালিক পাঠ্য;
  • eoবা ol;
  • C, সেমিকোলন, বা এ

এখানে আরও কয়েকটি ফলপ্রসূ মিল রয়েছে যা অন্যদের থেকে মুক্তি পাওয়ার মতো বলে মনে হয় না:

  • nf
  • nu
  • yp
  • n.m

এটি রেটিনা জবাবের কাছাকাছি এবং আরও কাছাকাছি বাড়ছে, তবে আমি নিজে থেকেই বেশিরভাগ উন্নতি পেয়েছি।

এগুলির কোনও একটি পৃষ্ঠার কনসোলে এটি পরীক্ষা করুন: স্টার টেক্সট , নন-স্টার গ্রন্থ

var r=document.body.textContent.replace(/\n<br/g,"<br").split("\n").slice(0,-1);
var s=r.filter(function(x){return/ .[DERv]|tar|a.u|l.x|<i|eo|ol|[C;ಠ]/.test(x)}).length;
console.log("Total:",r.length,"Matched:",s,"Not matched:",r.length-s);

এখানে একটি বিকল্প সংস্করণ। /a/.testপ্রযুক্তিগতভাবে একটি ফাংশন, কিন্তু আমাদের মানদণ্ড পূরণ করে না :

/ .[ERv]|a.u|l.x|<i|eo|yp|ol|nf|tar|[C;ÿ-ff]/.test

এই স্কোরগুলি 71.90% (697 তারাযুক্ত, 741 টি তারকাচিহ্নিত)।


কোন তালিকাভুক্ত গ্রুপগুলি সর্বাধিক তারকাচিহ্নিত এবং সর্বনিম্ন নিরক্ষিত পোস্টগুলির সাথে মেলে তা দেখার জন্য আমি তালিকাগুলিতে কিছু বিশ্লেষণ চালিয়ে যাচ্ছি। বিশ্লেষণগুলি এই গিস্টে পাওয়া যাবে । এখনও অবধি, আমি পরীক্ষা করেছি aaএবং a.aমিলছি। a.u২৮ স্কোর নিয়ে প্রায় ৫০ এর নিচে নেমে গেছে, তবু এটি এটির বিন্যাসের সবচেয়ে দক্ষ ম্যাচ ...


কেবল 1000 টি বার্তা আছে ...?
কনর ও'ব্রায়ান

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ কিছুগুলি মাল্টি-লাইন ছিল, যা স্নিপেটে হিসাব করা হয়নি। এটি স্থির করা হয়েছে।
ইটিএইচ প্রডাকশনগুলি

কেন কেউ ব্যবহার করে না /regexp/.test()? আমি মনে করি এটির সাথে আরও কয়েকটি ক্ষেত্রে গ্রাস করা সম্ভব।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

8
আজ আমি শিখেছি আমি কেবল নিজের নাম বলে চ্যাট তারকারা পেতে পারি।
অ্যালেক্স এ।

@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ ধন্যবাদ, আমি কীভাবে তা ভেবে দেখছি না
ইটিএইচ প্রোডাকশনগুলি

15

পাইথ, 50 বাইট, 67.9%

0000000: 21 40 6a 43 22 03 91 5d d3 c3 84 d5 5c df 46 69 b5 9d  !@jC"..]....\.Fi..
0000012: 42 9a 75 fa 74 71 d9 c1 79 1d e7 5d fc 25 24 63 f8 bd  B.u.tq..y..].%$c..
0000024: 1d 53 45 14 d7 d3 31 66 5f e8 22 32 43 7a              .SE...1f_."2Cz

এটি 322 বালতির একটিতে ইনপুটটি হ্যাশ করে এবং সেই বালতিটির উপর নির্ভর করে বুলিয়ান চয়ন করে।

স্কোরিং

$ xxd -c 18 -g 1 startest.pyth
0000000: 72 53 6d 21 40 6a 43 22 03 91 5d d3 c3 84 d5 5c df 46  rSm!@jC"..]....\.F
0000012: 69 b5 9d 42 9a 75 fa 74 71 d9 c1 79 1d e7 5d fc 25 24  i..B.u.tq..y..].%$
0000024: 63 f8 bd 1d 53 45 14 d7 d3 31 66 5f e8 22 32 43 64 2e  c...SE...1f_."2Cd.
0000036: 7a 38                                                  z8
$ echo $LANG
en_US
$ pyth/pyth.py startest.pyth < starred.txt
[[345, False], [655, True]]
$ pyth/pyth.py startest.pyth < unstarred.txt
[[703, False], [297, True]]

14

সিজেএম, 45 বাইট, 65.55%

l_c"\"#&'(-.19<CEFHIJLMOPSTXY[_qಠ"e=\1b8672>|

প্রথম অক্ষরটি একটি নির্দিষ্ট তালিকায় বা সমস্ত কোড পয়েন্টের যোগফল 8,672 এর চেয়ে বড় কিনা এটি পরীক্ষা করে।

স্কোরিং

$ cat startest.cjam
1e3{l_c"\"#&'(-.19<CEFHIJLMOPSTXY[_qಠ"e=\1b8672>|}*
$ java -jar cjam-0.6.5.jar startest.cjam < starred.txt | fold -1 | sort | uniq -c
    308 0
    692 1
$ java -jar cjam-0.6.5.jar startest.cjam < unstarred.txt | fold -1 | sort | uniq -c
    619 0
    381 1

foldআসল উত্তর সহ আমাকে কমান্ড সম্পর্কে শেখানোর জন্য +1 ।
ডুরকনব

6

মতলব / অষ্টাভে, 17 বাইট 60.15%

490 টি বার্তাকে স্ট্রেড হিসাবে সঠিকভাবে শ্রেণিবদ্ধ করা হয়েছে, 713 টি বার্তাকে অপরিবর্তিত হিসাবে চিহ্নিত করা হয়েছে

বর্তমান সংস্করণ:

শুধু দৈর্ঘ্য পরীক্ষা করা।

f=@(w)numel(w)>58

পুরাতন রুপ:

অন্য যে কোনও ভাষায় অনুবাদ করা যেতে পারে। এটি কেবল বার্তাটিতে স্টার শব্দগুলি রয়েছে কিনা তা যাচাই করে ।score: 59/911/52.5%

f=@(w)nnz(strfind(lower(w),'star'))>0 %

এই কোড ব্যবহার করে টেস্টকেসের জন্য ফলাফল:

slCharacterEncoding('UTF-8');

fid = fopen('codegolf_starred_messages_starred.txt');
line = fgetl(fid);
starred = 0;
while ischar(line)
    if f(line);
        starred = starred +1;
    end

    disp(line)
    line = fgetl(fid);
end
fclose(fid);


fid = fopen('codegolf_starred_messages_unstarred.txt');
line = fgetl(fid);
unstarred = 0;
while ischar(line)
    if ~f(line);
        unstarred = unstarred +1;
    end

    disp(line)
    line = fgetl(fid);
end
fclose(fid);

disp(['  correctly classified as *ed: ',num2str(starred)])
disp(['correctly classified as un*ed: ',num2str(unstarred)])
disp(['                  total score: ',num2str((starred+unstarred)/20),'\%'])

3

সিজেএম, 32 বাইট, সার্বিক স্কোর 0.5605 (56%)।

428 টি তারকাচিহ্নিত বার্তা এবং 693 টি তারাবিহীন বার্তাগুলি সঠিকভাবে সনাক্ত করে। মোট স্কোর (360+730)/2000=0.545

l_el"sta"/,1>\,)4%!|

জয়ের প্রত্যাশা না করে, দেখবেন এটি কীভাবে পারফর্ম করে। উপরে একক বার্তার কোড রয়েছে, একাধিক ব্যবহারের সাথে চালানোর জন্য এই পরিবর্তিত সংস্করণ যা তারকৃত বার্তাগুলির পরিমাণ ফেরত দেয়:

1000{l_el"star"/,1>\,)6%!|}fA]:+

উভয় ফাইলের কাঁচা পাঠ্য হিসাবে এটি STDIN দিয়ে পরীক্ষা করুন। যদি বার্তাটিতে "তারা" থাকে তবে সত্য হয় length + 1 mod 4 = 0


2
সুতরাং ... যদি কোনও বার্তার দৈর্ঘ্যের চেয়ে আরও চারটি ভাগ করে, তবে তারার অভিনয়ের সম্ভাবনা আছে?
কনর ও'ব্রায়ান

2
@ সিও'বাʀɪᴇɴ হ্যাঁ, তবে এটি একটি উচ্চ স্কোর সরবরাহ করে
গ্যামার কর্পস

3

জাভাস্ক্রিপ্ট ES6, 0.615 = 61.5%

তারকাচিহ্নিত হিসাবে 342 সঠিকভাবে চিহ্নিত হয়েছে, 888 সঠিকভাবে অস্তিত্বহীন হিসাবে চিহ্নিত হয়েছে, (342+888)/2000 = 0.615

x=>-~x.search(/(bo|le)x|sta|ಠ|ツ/i)

এই মত টেস্ট এই বা এই :

r=document.body.innerHTML.replace(/<\/*pre>/g,"").split`
`.filter(x=>-~x.search`(bo|le)x|sta|ಠ|ツ`).length

আমি এখনও আপনাকে পেতে পারি, আমার প্রাইটি!


1
আমি এখন আপনাকে পেয়েছি;)
ETH প্রোডাকশনগুলি

@ETH প্রোডাকশন জিজি। আমি আরও কিছু সাধারণ নিদর্শন সন্ধান করব।
কনর ও'ব্রায়ান

3

রেটিনা, 46 বাইট, 68.55

^.*([zj_C;&¡-ff]|sta|san|soc|bo|eo|xk|l.x|<.>)

679 তারা: 692 আনস্টার

আরও কিছু রেজিেক্স পেতে রেটিনাতে স্যুইচ করা হয়েছে ... এখনও করা হয়নি।


ওহ হ্যাঁ, ভুলে গেছি। আমি এটা ঠিক করব.
মামা ফান রোল

1

সি # 6.0 (। নেট ফ্রেমওয়ার্ক 4.6), 50 বাইট, 63,60%

bool s(string i)=>Regex.IsMatch(i,"ol|tar|l.x|ಠ");

প্রোগ্রামটি আমি পরীক্ষার উদ্দেশ্যে ব্যবহার করেছি:

void Main()
{
    var starred = @"C:\starred.txt";
    var unstarred = @"C:\unstarred.txt";

    var linesStarred = File.ReadAllLines(starred);
    var linesUnstarred = File.ReadAllLines(unstarred);

    var cls = linesStarred.Count();
    var clsc = 0;

    foreach (var line in linesStarred)
    {
        if ( s(line) ) clsc++;
    }

    var clu = linesUnstarred.Count();
    var cluc = 0;

    foreach (var line in linesUnstarred)
    {
        if (!s(line)) cluc++;
    }

    $"Starred {clsc}/{cls} correct ({(clsc/cls*100):0.00}%)".Dump();
    $"Unstarred {cluc}/{clu} correct ({(cluc /clu*100):0.00}%)".Dump();
    $"{(((clsc+cluc)/(decimal)(cls+clu))*100):0.00}".Dump();
}

bool s(string i)=>Regex.IsMatch(i,"ol|tar|l.x|ಠ");
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.