আসুন তাদের কভার দ্বারা কিছু বই বিচার করুন


47

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

আপনাকে এতক্ষণে এমন কোনও প্রোগ্রাম বা ফাংশন লিখতে চ্যালেঞ্জ জানানো হয়েছে যা পিপিসি প্রশ্নের শিরোনামটিকে ইনপুট হিসাবে গ্রহণ করে এবং এর স্কোরের পূর্বাভাস দেয়।

উদাহরণস্বরূপ, আপনি Counting Grains of Riceএকটি ইনপুট হিসাবে গ্রহণ করতে পারেন এবং আপনি এক্ষেত্রে স্কোরের কাছাকাছি কিছু ফেরত দেওয়ার চেষ্টা করছেন 59। অ-পূর্ণসংখ্যার অনুমানগুলি ঠিক আছে তবে অনুমান বা নীচে অনুমানগুলি -20হয় না।

টেস্টিং এবং স্কোরিংয়ের জন্য ডেটা এখানে:

http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes

স্কোরিং: আপনার প্রোগ্রামটি এই সাইটের (পিপিসিজি) ইতিহাসের প্রতিটি প্রশ্নের উপর পরিচালিত হবে, বন্ধ হওয়া প্রশ্নগুলি গণনা করা হবে না। ফাংশনটি ln(score + 20)তখন প্রতিটি স্কোর এবং প্রতিটি অনুমানের জন্য প্রয়োগ করা হবে। দুটি ফলাফলের মানগুলির মধ্যে মূল-মধ্য-স্কোয়ার-ত্রুটিটি আপনার স্কোর score স্বল্পতা ভালো.

উদাহরণস্বরূপ, এমন একটি প্রোগ্রাম যা প্রতিবার 0 অনুমান করেছিল 0.5 স্কোর করবে, আর এমন একটি যা প্রতিবার 11 অনুমান করেছিল 0.37 স্কোর করবে।

দয়া করে আপনার স্কোর গণনা করুন এবং এটি আপনার উত্তরের শিরোনামে অন্তর্ভুক্ত করুন। এই প্রশ্নটি কতটা আপোভেটস পাবে তার জন্য দয়া করে আপনার প্রোগ্রামের পূর্বাভাসও অন্তর্ভুক্ত করুন।

সীমাবদ্ধতা:

  • অতিরিক্ত হার্ড-কোডিং প্রতিরোধ করতে, 1000 টির বেশি অক্ষর নেই।

  • যুক্তিসঙ্গত মেশিনে এক মিনিটের মধ্যে উপরে সেট করা সম্পূর্ণ ডেটা চালিয়ে যেতে হবে।

  • স্ট্যান্ডার্ড লুফোলগুলি বন্ধ রয়েছে।


পাইথনে আপনার পরীক্ষার জন্য এবং / অথবা অস্পষ্টতাগুলি পরিষ্কার করার জন্য এখানে একটি পরীক্ষক লিখেছেন:

import sys
import math
import csv

scores_dict = {}

with open(sys.argv[1], 'r') as csv_file:
    score_reader = csv.reader(csv_file)
    for score, title in score_reader:
        if score == 'Score':
            continue
        scores_dict[title] = int(score)

def rate_guesses(guesser):
    def transform(score):
        return math.log(score + 20) if score > -20 else 0
    off_by_total = 0
    lines_count = 0
    for title in scores_dict:
        guessed_score = guesser(title)
        real_score = scores_dict[title]
        off_by_total += (transform(real_score) - transform(guessed_score)) ** 2
    return (off_by_total/len(scores_dict)) ** .5

def constant11(title):
    return 11

print(rate_guesses(constant11))

19
দুর্দান্ত ধারণা, তবে এটি লজ্জাজনক যে ডেটাসেট স্থিতিশীল নয়, তাই স্কোরগুলি কিছুক্ষণ পরে অবৈধ হয়ে যাবে। কৌশলগত ভোটদানের একটি ছোটখাটো সম্ভাবনাও রয়েছে: যে কেউ এই প্রশ্নের উত্তর দেয় এবং একই সপ্তাহে ভক্স-পপুলি ব্যাজ উপার্জন করে তাকে সন্দেহের সাথে দেখা উচিত! ;-)
লেভেল রিভার সেন্ট

1
শিরোনামে কি প্রযোজ্য [closed]এবং এর মতো জিনিসগুলি অন্তর্ভুক্ত বা বাদ দেওয়া হবে [on hold]?
es1024

4
@ স্টিভেরিলিল ওয়েল, সময়টির অগ্রগতির সাথে সাথে এর ফ্লিপসাইডটিও আমরা দেখতে পাব যে প্রোগ্রামগুলি ভবিষ্যতের পোস্টগুলিতে এবং অতীতের পোস্টগুলিতেও ভাল ফল দেয় কিনা।
isaacg

6
হার্ড কোডিংকে পরাভূত করা শক্ত। প্রতিটি হার্ড-কোডড শীর্ষ ভোটের প্রশ্নটি 0.4 স্কোরের পরিমাণ হ্রাস করতে পারে। এবং খুব সাধারণ প্যাটার্নও আছে বলে মনে হচ্ছে, হাহা। আমি ভবিষ্যদ্বাণী করছি যে উত্তরগুলি কেবল 1000 বাইটে কতটা হার্ড-কোডেড ফলাফলের সাথে ফিট করতে পারে সে সম্পর্কে প্রতিযোগিতা করবে।
justhalf

5
আপনার পরীক্ষার সেট হিসাবে আপনার প্রশ্নের সম্পূর্ণ শরীর ব্যবহার করা উচিত নয়। আপনার এলোমেলোভাবে একটি নির্দিষ্ট সংখ্যা (10% -20%) প্রাক-নির্বাচন করা উচিত এবং সেগুলি আপনার পরীক্ষার সেট হিসাবে সংজ্ঞায়িত করুন (তবে এটি কী তা কাউকে বলবেন না)। ভবিষ্যতের ভবিষ্যদ্বাণীমূলক মান (যেমন, কোনও প্রদত্ত সাবসেটে ভাল কাজ করে এমন একটি) এর চেয়ে পূর্বের ইতিহাসের পূর্বাভাস দেয় এমন একটি অ্যালগরিদম তৈরি করা অনেক সহজ। (আমরা যা দেখতে পাচ্ছি তা থেকে এই 10% সরিয়ে ফেলা আরও ভাল হবে তবে এটি সত্যিই কার্যকর হবে না))
জো

উত্তর:


9

পাইথন 2, 991 অক্ষর, স্কোর 0.221854834221, পূর্বাভাস 11

import base64
e={}
d=base64.decodestring('vgAcRAEVDAIsqgQYalYaggcjQKwVXAoZWAsYQg0Ckg4VlWEX9hEDRhMe0hckCBkeuhsW3CAWQiEm\nSiMZMiwgTDAZZjIcSLMZfDQDnjwCe2AVaEQCYWEBIEgnDEoXzk0e3lQb5FYVKlkVZlwB+F0XwmI/\nGmRcuGUXWmYdVGkbzmwafG8eaHMdInkggHonRn5sKoMXgIkpbowVOI4cNJAubpQdYpcydJgVypkA\nZpweMp8ZsqEcRKMghKQYkKVPPXEWMqkWHKwbjrEdzLIBNLMf1LQivrYC99UV9rxNRsABNMEiPzob\npc0ActAhn3gcrNUZYNcWYNov/t8VgOEXAuMYqOUWsqUiCPIefPWNbvtKevwWvP0Cl9UsjQMdWwQb\nfQdpJQgWYwkCZRLBjxMWWdkqHRkWNxwB6x8p2SEZyyICSyYcgysaOS0CUy8hezAaGeEVpTRQ3zUz\nZzkZRzohizwwST4c8UAdF0OqG9AXIuEYYRN6208nU1AktVEVJ1IVWeMkIVQXdY4D2VYYD/cYb1om\nG1xA0zoY3uUaRWAhWpBSHWUXQTxGe+cad20CO3AZX3EBw3IiMXcef3gecXsVGXwhw30VbX4W24BD\n6qyQ45YaYYgZ4YobbYwauY4bMY82HZEdO5YmQ5cV35sVxaMbY6gYNas576ws+bADO7QpN7hdLJ8B\n4Eoks8EYX8VU68cYWfcar82QOdAaxdEfQ9UiW/kXL9k2ddwCW90m694enqUCkeEBE+IYWvsfA1FC\nJ+spMVIjhe4WEP0fAfYax/c3MfgbgfkqP/0DLf4V\n')
for i in range(0,600,3):
 e[ord(d[i])*256+ord(d[i+1])]=ord(d[i+2])*2-8
def p(t):
 return e.get(hash(t)%256**2,11)

ব্যাখ্যা:

এটি নির্লজ্জ হার্ডকডিং, তবে এটি দক্ষতার সাথে করার চেষ্টা করছে।

প্রাক-প্রক্রিয়াকরণ:

একটি পৃথক কোডে, আমি প্রতিটি শিরোনাম 0 এবং 256 ^ 2-1 এর মধ্যে মান দিয়েছি। আসুন এই মানগুলি বিন বলি। প্রতিটি বিনের জন্য, আমি গড় স্কোর গণনা করেছি। (গড় প্রয়োজন কারণ ডাবের এক ক্ষুদ্র ভগ্নাংশের জন্য সংঘর্ষ রয়েছে - একই শিরোনামে 1 টিরও বেশি শিরোনাম হ্যাশ But কিন্তু বিপুল সংখ্যাগরিষ্ঠের জন্য প্রতিটি শিরোনাম তার নিজস্ব বাক্সে মানচিত্র করে)।

প্রতিটি শিরোনামের জন্য 2-বাইট কোডের পিছনে ধারণাটি হল যে 1 বাইট যথেষ্ট নয় - আমরা অনেকগুলি সংঘর্ষ পেয়েছি, তাই প্রতিটি 1-বাইট বিনকে কী স্কোর অর্পণ করতে হবে তা আমরা সত্যই জানি না। তবে 2-বাইট বিনের সাথে প্রায় কোনও সংঘর্ষ নেই এবং আমরা কার্যকরভাবে প্রতিটি শিরোনামের 2 বাইট উপস্থাপনা পাই।

তারপরে বিনগুলি র‌্যাঙ্ক করুন - স্কোরের মাপের গণনা করুন যদি আমরা কেবল এই অনুমানের পরিবর্তে ১১ টি এই বিনটিকে তার গণিত মান নির্ধারণ করি। শীর্ষস্থানীয় এন বিন নিন এবং সেগুলিকে একটি স্ট্রিংয়ে কোড করুন (যা আসল কোডে d)।

এনকোডিং: বিনের কীটি 2 বাইট হিসাবে কোড করা হয়েছে। মানটি 1 বাইট ব্যবহার করে এনকোড করা হয়। আমি -8 এবং 300 + এর মধ্যে মানগুলি পেয়েছি, সুতরাং এটি 1 বাইটে পেতে x:> (x + 8) / 2 এ কিছুটা চেপে ধরতে হয়েছিল।

আসল কোড:

বাইট ট্রিপল্ট হিসাবে ডি পড়ুন, উপরে বর্ণিত এনকোডিংটি ডিকোড করুন। যখন কোনও শিরোনাম দেওয়া হয়, তখন এর হ্যাশ গণনা করুন (মডুলো 256 ^ 2), এবং যদি সেই কীটি ডিকটিতে পাওয়া যায়, তবে মানটির মানটি ফিরিয়ে দিন। অন্যথায়, 11 ফেরান।


3
একটি পরামর্শ: গড় স্কোরটি তেমন ভাল নয়। চ্যালেঞ্জগুলি স্কোরিং ফাংশনটি দেখুন, এটি অ-লিনিয়ার।
উত্সাহক

1
@ প্রতিলিপি ধন্যবাদ, আমি বুঝতে পেরেছি যে আমার কাজ শেষ হওয়ার পরে। জিনিসটি হচ্ছে, 99% বিনের জন্য, কোনও সংঘর্ষ নেই, সুতরাং গড়টি কেবলমাত্র একক শিরোনামের স্কোর যা সেই বিনটিতে মানচিত্র করে।
অফরি রবিভ

16

জাভাস্ক্রিপ্ট ES6

স্কোর: 0.245663
দৈর্ঘ্য: 1000 বাইট পূর্বাভাস
: 5

(আমার ধারণা, ডাউনভোটগুলির অপ্রত্যাশিত জলাবদ্ধতার জন্য প্রশ্নটি এসেছে P P)

minified

E="ABCDEFGHIJKLMNOPQRSTUVWXYZ";E=E+E.toLowerCase()+"0123456789!@#$%;*()";P="RCRHIFMGPGIDQKHMJLLRMLFJGKHEqHPOgJNKGPCHPJNUPOSGJQKKKMELMIJHLKIKNcKDOfSJLFHDILGKIOUKLMLLKMKIHGHJGIIJDGJKIHIIFIGMTIHFJMIKDJGQJKGMKJHPRJPLMGIOPIIIIPBYFMGLEIKIMMRUKFLFGJFKFTHPFODEQTGTHKIJDHNJGDGiHKNYLHHDLJHGILOEViKNEKGQZfHJMIISIJFRHKLJMLPIFJILKKKJKKJESHNLLIKIGKGJJJHKJRGULLSLRONJNEeLKIQGGPQIHPLEIHHIDXjQHNBKOGWWIENRbYoHINHNMKTNKHTGMIPXFJLLMLIHPPLDJJKFUMIQMOKJLJJKIJKNLHRILJIAIbJEZOGIELGHGLOINDPJMJeJWRIIJHSOZDOsOFRRIOIOTIJSGGJKFUIDOINGOcLQEJFEITLMNIIGIGIMG7LPSNLKVOKIFGHJITGOFUJIIRN";K={};"99r1501vz076mip077myv0733it280exx081gt9118i1g279dyx102uho203ejd07433z087uje097kdg1567ft2088rk275dmu1203ez106lih1763ei126f6q101aax084owh088aid161i9y179gvn236ptn3338vf132i55080fke101l4z3789ai281ulm081blm124euz074o5m07513z14117l095qdn092gl30757n5153".replace(/(...)(...)/g,(_,a,b)=>K[a]=1*b);D=40655;N=479;H=(s,T)=>(h=7,[...s].map(c=>h=~~(h*T+c.charCodeAt(0))),h);S=s=>(y=H(s,31),K[((y%D+D)%D).toString(36)]||E.indexOf(P[(H(s,48)%N+N)%N]));

সম্প্রসারিত

E = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
E = E + E.toLowerCase() + "0123456789!@#$%;*()";
K = {};
P = "RCRHIFMGPGIDQKHMJLLRMLFJGKHEqHPOgJNKGPCHPJNUPOSGJQKKKMELMIJHLKIKNcKDOfSJL" +
    "FHDILGKIOUKLMLLKMKIHGHJGIIJDGJKIHIIFIGMTIHFJMIKDJGQJKGMKJHPRJPLMGIOPIIIIP" +
    "BYFMGLEIKIMMRUKFLFGJFKFTHPFODEQTGTHKIJDHNJGDGiHKNYLHHDLJHGILOEViKNEKGQZfH" +
    "JMIISIJFRHKLJMLPIFJILKKKJKKJESHNLLIKIGKGJJJHKJRGULLSLRONJNEeLKIQGGPQIHPLE" +
    "IHHIDXjQHNBKOGWWIENRbYoHINHNMKTNKHTGMIPXFJLLMLIHPPLDJJKFUMIQMOKJLJJKIJKNL" +
    "HRILJIAIbJEZOGIELGHGLOINDPJMJeJWRIIJHSOZDOsOFRRIOIOTIJSGGJKFUIDOINGOcLQEJ" +
    "FEITLMNIIGIGIMG7LPSNLKVOKIFGHJITGOFUJIIRN";

   ("99r1501vz076mip077myv0733it280exx081gt9118i1g279dyx102uho203ejd07433z087u" +
    "je097kdg1567ft2088rk275dmu1203ez106lih1763ei126f6q101aax084owh088aid161i9" +
    "y179gvn236ptn3338vf132i55080fke101l4z3789ai281ulm081blm124euz074o5m07513z" +
    "14117l095qdn092gl30757n5153").
        replace( /(...)(...)/g, (_,a,b) => K[a] = 1*b );

D = 40655;
N = 479;
H = (s,T) => (
    h = 7,
    [...s].map( c => h = ~~(h*T + c.charCodeAt(0)) ),
    h
);

S = s => (
    y = H( s, 31 ),
    K[((y%D + D)%D).toString( 36 )] || E.indexOf( P[(H( s, 48 )%N + N)%N] )
);

ফাংশনটি Sএকটি স্ট্রিং (শিরোনাম) গ্রহণ করে এবং তার স্কোরটি প্রদান করে।

আচরণ সম্পর্কিত নোট:

  • 70 70 টি ভোট শিরোনাম> 70 টি ভোটের শিরোনাম থেকে আলাদাভাবে পরিচালনা করা হয়
  • Vote 70 টি ভোট শিরোনাম একটি অত্যন্ত পরিশীলিত হোলোনমিক কীওয়ার্ড ট্র্যাকিং সম্ভাব্য অপ্টিমাইজেশন অ্যালগরিদম ব্যবহার করে বিনগুলিতে সাজানো হয়েছে যে কোনওভাবেই স্ট্রিং হ্যাশ ফাংশনের অনুরূপ নয় vote
  • কিছুটা খুশি ক্যালকুলাস পরে দেখা যাচ্ছে যে প্রতিটি বিনের অনুকূল অনুমানটি বিনের সমস্ত শিরোনামের জন্য বিয়োগ 20 এর জ্যামিতিক গড় (ভোট + 20) এর জ্যামিতিক গড়
  • সমস্ত 479 বিনের অনুকূল অনুমানগুলি তখন 479-চরিত্রের বেস -70 স্ট্রিং হিসাবে এনকোড করা হয়
  • 70০ টি ভোট শিরোনামের জন্য, শিরোনামগুলিকে অনন্য 3-অঙ্কের বেস -36 কোড দেওয়া হয়েছে একটি অত্যাধুনিক হ্যাশিং কৌশল ব্যবহার করে উত্পন্ন যা অন্যান্য> 70 টি ভোটের শিরোনামের সাথে কোনও সংঘর্ষের এবং ≤ 70 ভোট শিরোনামের কোনও মিথ্যা সনাক্তকরণের গ্যারান্টি দেয়। এই অত্যাধুনিক প্রযুক্তিটি কোনওভাবেই এলোমেলো বিন গণনা চেষ্টা করে দেখা যায় না যতক্ষণ না কেউ কোনও সংঘর্ষ সৃষ্টি না করে।
  • >> 70 টি ভোটের শিরোনাম কোড এবং তাদের ভোট গণনাগুলি একটি স্ট্রিং (শিরোনামে 6 বাইট) এ এনকোড করা থাকে, যা একটি সন্ধানের সাধারণ টেবিলে রূপান্তরিত হয়। রুটিনে সমস্ত> 70 টি ভোট শিরোনামের জন্য শূন্য ত্রুটি রয়েছে।

10

পাইথন 2, স্কোর = 0.335027, 999 অক্ষর, এই প্রশ্নের জন্য 11.34828 অনুমান করুন

শুধু বল ঘূর্ণায়মান পেতে। এটি কোথাও অনুকূল নয়।

অভিনব এসভিএম জিনিসটি কেবল আমার এলোমেলো ধারণা এবং আমি এটি বাস্তবায়নের মতো অনুভব করেছি, তাই এটি এখানে। এটি 0.02 পয়েন্টের সাহায্যে বেসলাইনটি উন্নত করে, তাই আমি এতে যথেষ্ট খুশি। তবে হার্ড-কোডিং ইনপুটটি দেখানোর জন্য যেখানে বেশিরভাগ উন্নতি এসেছে, আমি কিছু উত্তরও কোডিং করছি।

হার্ড-কোডিং ছাড়াই স্কোর 0.360 হয় (এবং আসলে সমস্ত ভবিষ্যদ্বাণীগুলি প্রায় ১১, হাহা)

আমি সাইকিট- লার্ন এবং এনল্টেকে ব্যবহার করছি

import sys
import math
import csv
from sklearn.feature_extraction.text import TfidfVectorizer as TV
from sklearn.svm import SVR
from nltk.stem.porter import PorterStemmer as PS
sd = {}
lr = None
tv = None
with open(sys.argv[1], 'r') as cf:
    sr = csv.reader(cf)
    for sc, t in sr:
        if sc == 'Score':
            continue
        sd[t] = int(sc)
ts,scs = zip(*sd.items())
s = PS()
def analyzer(st):
    r = []
    for word in st.split():
        if word.isdigit():
            r.append('<NUM>')
        elif not word.isalnum():
            r.append('<PUNCT>')
        else:
            r.append(s.stem(word.lower()))
    return r
tv = TV(min_df=25, stop_words='english', analyzer=analyzer)
ti = tv.fit_transform(ts)
lr = SVR()
lr.fit(ti, scs)
d={'4 w':378,'y 42':333,'eeta':280,'an Got':279,'s 2 ':275,"e I'":208,'r CP':203,'? No':179,'B.O':156}
def c(t):
    for s in d.keys():
        if s in t:
            return d[s]
    t = tv.transform([t])
    r = lr.predict(t)[0]+1.5
    return r

আমি নিশ্চিত বুঝতে পারছি না - আপনি কোনও বাহ্যিক ফাইল থেকে স্কোরগুলি পড়েছেন? তাহলে কেন শুধু এসডি [টি] এর পূর্বাভাস দেওয়া হবে না? এটি 0 এর স্কোর দেবে ...
অফরি রভিভ

2
কারণ এটি মজাদার হবে না = পি
justhalf

4

পাইথন 2, 986 অক্ষর, স্কোর 0.3480188, 12 এর পূর্বাভাস

M,S=14.29,23.02
D=lambda x:[ord(y)-32 for y in x]
w='fiLoNoNuMiNoTiMoShOnLoGoLeThRantexgensuBaSqUnInPeReGaMuLinprOuThInThEvEnClOpExPyThADdiSoLiSiMaTrEqUsImAsCoManstARrePoWoReawhapoLandradeTyPaLOsoReCreprediVeReSpebeTiPrImPladaTrihelmakwhicolpaReValpaTrafoROsoumovfinfunpuzyoufaSeQuiwhecoDeChagivcouchehanpoStrdiGraconjavwricalfrowitbinbrafrabuipoi'
for i in range(26):w=w.replace(chr(65+i),chr(97+i)*2)
w=[w[i:i+3]for i in range(0,372,3)]
m=D("(+),+)+=*...+..++'(*)5)/2)*43++16+0,+33*4*/(0.'+>-)+13+(2?8+6;,3;43+4(+.('(,.*.*+56+6)0((++(B,))+E0,-7/)/*++),+***)2+(3(.*)'")
s=D("))'B)'*j+:51(*3+0')+)^'/<-+MG,-1=),-0:A+T&J&K1%,O*()4Y-%:_A.=A*C]MJ-N%)5(%%-0+).*3Q(M&0'%(+$p*)()a8:-T?%5(-*'/.'+)+@,'J&1'&&")
def G(x,m,s):s=s or 1e-9;return(.4/s)*(2.78**(-(x-m)**2./(2*s*s)))
d={w[i]:(m[i],s[i])for i in range(124)}
def Z(t,c):
 p=1
 for W in t.split():
  if len(W)>3:
   W=W[:3].lower()
   if W in d:p*=G(c,*d[W])
 return p*G(c,M,S)
def J(t):return max([(Z(t,r),r)for r in range(-9,99)])[1]

প্রাসঙ্গিক কাজ হয় J

প্রোগ্রামটি মূলত নিখুঁত বেইসকে শিরোনামের শব্দগুলি বৈশিষ্ট্য হিসাবে ব্যবহার করছে তবে চর সীমাটির জন্য এটি অত্যন্ত সীমাবদ্ধ thanks কতটা বাধা? আচ্ছা ...

  • প্রতিটি শিরোনামের জন্য আমরা লোয়ার কেসে রূপান্তর করি এবং কেবল কমপক্ষে 4 টি অক্ষর দীর্ঘ শব্দ দেখি। তারপরে আমরা বৈশিষ্ট্য হিসাবে এই প্রতিটি শব্দের প্রথম তিনটি বর্ণ গ্রহণ করি । আমরা অক্ষরে সাশ্রয় করতে স্ট্রিপিং বিরামচিহ্নগুলি এড়িয়ে যাই।
  • আমরা কেবলমাত্র লেটার ট্রিপল্ট বেছে নিই যা কমপক্ষে 19 টি শব্দের শুরুতে রয়েছে (এগুলি wউপরের মধ্যে সঞ্চিত রয়েছে )। সংকোচন ট্রিপলটি পুনরায় সাজানোর মাধ্যমে সম্পন্ন করা হয় যাতে যতগুলি সম্ভব দ্বিগুণ অক্ষর উপস্থিত থাকে এবং এই জোড়াগুলি তাদের সংশ্লিষ্ট ASCII বড় হাতের সাথে প্রতিস্থাপন করা হয় (উদাহরণস্বরূপ fiLoNoN ... → ফাইল, দীর্ঘ, নন, ...)
  • প্রতিটি ত্রিপলিটির জন্য, আমরা শিরোনামগুলির স্কোরগুলি দেখি যেখানে এটি প্রদর্শিত হয় এবং স্কোরগুলির গড় এবং মান বিচ্যুতি গণনা করে। তারপরে আমরা গড়গুলি / এসডি সর্বাধিক 90 (সত্যিকারের ASCII এনকোডিংয়ের অনুমতি দিচ্ছি, যেহেতু 95 টি প্রিন্টযোগ্য এএসসিআইআই রয়েছে তাই) ব্যবহার করে এটি উপরেরগুলিতে , আমরা তাদের পূর্ণসংখ্যায় রূপান্তর করি এবং তাদের উপরে সংরক্ষণ করি storems
  • G সাধারণ বিতরণ ফাংশন - আমরা অক্ষরে সঞ্চয় করতে আমরা ই টু 2 ডিপি এবং 2 পাই থেকে 1 ডিপি এর বিপরীতমুখী বর্গমূল করি।

সামগ্রিকভাবে চূড়ান্ত চর সীমাটি এটিকে আমার মধ্যে সবচেয়ে খারাপ ধারণাগুলি তৈরি করেছে, তবে আমি যে পরিমাণে ক্র্যামে পরিচালনা করতে পেরেছি তা নিয়ে আমি বেশ খুশি (যদিও এটি খুব ভালভাবে কাজ করে না)। সংক্ষেপণের জন্য কারও কাছে যদি আরও ভাল ধারণা থাকে তবে দয়া করে আমাকে জানান :)

(আমার অর্থহীন সংকোচনের বিষয়টি দেখানোর জন্য কেনিটিএমকে ধন্যবাদ)


আমি যদি কোডটি ভুলভাবে সম্পাদন না করি তবে আপনার সংক্ষেপণ কোডটি সংক্রামিত ফলাফলের চেয়েও দীর্ঘ ... w='grge…scse';w=[w[i:i+2]for i in range(0,len(w),2)]165 বাইট যখন আপনার C=lambda:…;w=C('…')179 বাইট।
কেনেটিএম

@ কেনিটিএম ওহ ধন্যবাদ - আমি কোডের সাথে এতটা গোলযোগ করছি, চার্ট সীমাটি ফিট করার চেষ্টা করেছিলাম যে আমি সমস্ত সংকোচনের ট্র্যাকটি হারিয়ে ফেললাম। : পি
Sp3000

4

পাইথন 2, 535 অক্ষর, স্কোর 0.330910, 11.35 এর পূর্বাভাস

প্রতিটি শব্দযুক্ত শিরোনামের জন্য স্কোর গড়, তারপরে শীর্ষে এবং নীচে 50 টি শব্দ ব্যবহার করুন guess(title)ফাংশনে সম্ভবত বেস স্কোরটি সংশোধন করতে ।

পাইথন কোড:

BASE = 11.35
word={}
for sc,ti in csv.reader(open(sys.argv[1])):
    if sc == 'Score': continue
    parts = re.findall(r"[-a-zA-Z']+", ti.lower())
    for p in parts:
        a, c = word.get(p, (0.0,0))
        word[p] = (a+int(sc), c+1)

rank = sorted([(sc/ct,wd) for wd,(sc,ct) in word.items() if ct > 2])
adjust = rank[:50] + rank[-50:]

def guess(title):
    score = BASE
    parts = re.findall(r"[-a-zA-Z']+", title.lower())
    for sc,wd in adjust:
        if wd in parts:
            score *= 0.7 + 0.3*sc/BASE
    return score

3

সি

স্কোর: অজানা
দৈর্ঘ্য: 5 বাইট
পূর্বাভাস: 5

Golfed:

int s(char *p){return 5;}

Ungolfed:

int s(char *p)
{
   return 5;
}

স্কোরগুলির একটি কোয়েরি গড় স্কোর দেয় 5

এই মুহুর্তে এটি পরীক্ষা করার ক্ষমতা আমি পাইনি, অন্যরা চালানো / সম্পাদনা করতে স্বাগত।


আরও উপসাগরিত: int গুলি () {প্রত্যাবর্তন 5;}
জোশুয়া

"আপনাকে এতক্ষণে এমন একটি প্রোগ্রাম বা ফাংশন লেখার জন্য চ্যালেঞ্জ জানানো হয়েছে যা পিপিসি জি প্রশ্নের শিরোনামটিকে ইনপুট হিসাবে গ্রহণ করে এবং এর স্কোরের পূর্বাভাস দেয়" " - দুঃখিত তবে কিছুই নেই: 0
জোশপবারন

আমি এমন একটি প্ল্যাটফর্ম দেখেছি যার সাহায্যে যদি আপনি মূল () ভুলে যান তবে আপনার প্রথম কাজটি মূল () ছিল। হয়তো সে নির্ভর করছে।
জোশুয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.