সাহায্য করুন! আমার আরও বাড়ির কাজ আছে!


18

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

এটি জিপ্ফের আইনটিতে প্রমাণিত হয়েছে যে আপনি যদি y অক্ষের উপরে প্রতিটি শব্দের ফ্রিকোয়েন্সি এবং লোগারিথকে প্রতিটি অক্ষরের লগারিদম x অক্ষের (সবচেয়ে সাধারণ = 1, দ্বিতীয় সর্বাধিক সাধারণ = 2), তৃতীয় সর্বাধিক কমন = 3 এবং আরও)), এরপরে প্লটটি প্রায় -1 এর slালু সহ একটি লাইন দেখায়, 10% দেয় বা নেয়।

উদাহরণস্বরূপ, মবি ডিকের জন্য এখানে একটি প্লট রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এক্স অক্ষটি হল n তম সাধারণ শব্দ, y- অক্ষ হ'ল n এর সর্বাধিক প্রচলিত শব্দের সংখ্যার সংখ্যা । লাইনের slাল প্রায় -1.07।

এখন আমরা ভেনুটিয়ান আচ্ছাদন করছি। ধন্যবাদ, ভেনুয়ানিয়ানরা লাতিন বর্ণমালা ব্যবহার করে। নিয়মগুলি নিম্নরূপ:

  • প্রতিটি শব্দে কমপক্ষে একটি স্বর থাকতে হবে (ক, ই, আই, ও, ইউ)
  • প্রতিটি শব্দের মধ্যে এক নাগাড়ে তিনটি স্বর হতে পারে তবে একক সারিতে দুটি ব্যঞ্জনবর্ণের বেশি নয় (স্বর নয় এমন কোনও বর্ণ ব্যঞ্জনবর্ণ)।
  • 15 টি অক্ষরের চেয়ে বেশি কোনও শব্দ নেই
  • Alচ্ছিক: গ্রুপ শব্দগুলি বাক্যগুলিতে 3-30 শব্দ দীর্ঘ, পিরিয়ড দ্বারা সীমিত

কারণ শিক্ষক মনে করেন যে আমি আমার মার্টিয়ান হোম ওয়ার্কে প্রতারণা করেছি, আমাকে কমপক্ষে 30,000 শব্দ দীর্ঘ (ভেনুটিয়ান ভাষায়) একটি রচনা লেখার দায়িত্ব দেওয়া হয়েছে। তিনি জিপফের আইন ব্যবহার করে আমার কাজ যাচাই করতে যাচ্ছেন, সুতরাং যখন কোনও লাইন লাগানো হবে (উপরে বর্ণিত হিসাবে) opeালটি সর্বাধিক -0.9 হতে হবে তবে -1.1-এর চেয়ে কম নয়, এবং তিনি কমপক্ষে 200 শব্দের একটি শব্দভাণ্ডার চান। একই শব্দটি পরপর 5 বারের বেশি পুনরাবৃত্তি করা উচিত নয়।

এটি কোডগল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড। অনুগ্রহ করে আউটপুটটি পেস্টবিন বা অন্য কোনও সরঞ্জামে পেস্ট করুন যেখানে আমি এটি পাঠ্য ফাইল হিসাবে ডাউনলোড করতে পারি।


হ্যাঁ এবং আপনি চাইলে কেবল একটি 32767 শব্দের বাক্যটি করতে পারেন। সীমাবদ্ধতাটি হ'ল বাক্যটির শব্দের ঘনত্বগুলি অবশ্যই জিপফের আইন অনুসরণ করবে
জে আন্তোনিও পেরেজ

1
"শুক্র থেকে" এর traditionalতিহ্যবাহী বিশেষণটি ভেনেরাল, তবে কোনও কারণে এটি জনপ্রিয়তায় হ্রাস পেয়েছে। ভেনুসিয়ান সাধারণত সাই-ফাইতে ব্যবহৃত হয়।
পিটার টেলর

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

আপনার অনুমানটি যুক্তিসঙ্গত, যদিও theালটি -0.35 হবে
জে আন্তোনিও পেরেজ

এটি এখনও সরলরেখার মতো দেখায়; এটি কেবল theালটি খুব দুর্দান্ত হবে
জে আন্তোনিও পেরেজ

উত্তর:


3

গণিত, ১০২ বাইট

""<>RandomChoice[1/Range@215->Rest@Flatten@Outer[StringJoin,a={"v","a","e","i","o","u"},a,a,{" "}],8!]

নামহীন ক্রিয়াকলাপ কোনও ইনপুট না নিয়ে এবং ৪০,৩২০ ত্রি-অক্ষর ভেনুসিয়ান শব্দযুক্ত পেছনের স্থান সহ একটি স্ট্রিং ফিরিয়ে দেয়।

Outer[StringJoin,a={"v","a","e","i","o","u"},a,a,{" "}]216 ত্রি-অক্ষরের শব্দগুলি কেবলমাত্র "ভায়িউ" অক্ষর ব্যবহার করে তৈরি করা যায়, যার প্রত্যেকে তার নিজস্ব স্থান অনুসরণ করে। এই শব্দগুলির মধ্যে প্রথমটি "ভিভিভি" বৈধ ভেনুসিয়ান নয়, তবে Restএটিকে ফেলে দেয়।

তারপরে RandomChoice[1/Range@215->...,8!]8! = 21,3 শব্দের তালিকা থেকে 40,320 টি এলোমেলো পছন্দ, প্রথম 215 পূর্ণসংখ্যার ( 1/Range@215) এর পুনরাবৃত্তি দ্বারা নির্ধারিত ফ্রিকোয়েন্সি ওজন সহ । পরিশেষে, <>""...ফলাফলের তালিকায় স্ট্রিংগুলি সংযুক্ত করে।

আউটপুট নির্ধারক থেকে অনেক দূরে; এক রান এই ভেনুসিয়ান প্রবন্ধ পেয়েছে ।

গণিত, 129 বাইট

#2&@@@Sort[Join@@Table[{i,Rest@Flatten@Outer[StringJoin,a={"v","a","e","i","o","u"},a,a,{" "}]~Part~j},{j,215},{i,0,1,j/7!}]]<>""

এই এক নির্দোষ। 215 শব্দের ভিত্তি সেটটি একই, তবে জিপফের আইন ধরে রাখতে বাধ্য করার জন্য এখন প্রতিটি শব্দের একটি নির্দিষ্ট সংখ্যার বার বার করা হয় (শব্দ # জে প্রায় 7 বার / জে বার বার বলা হয়)। তারপরে পুনরাবৃত্তি এড়াতে শব্দগুলি সমানভাবে ইন্টারলিভ করা হয়। (কল্পনা করুন যে প্রতিটি শব্দ কোনও শাসকের উপরে ছড়িয়ে পড়েছে, সেই শব্দের সমস্ত অনুলিপি সমানভাবে ব্যবধানে রয়েছে; যখন সমস্ত শব্দগুলি যথাযথভাবে পাঠ করা হয়, তখন কোনও নির্দিষ্ট শব্দ খুব বেশি পুনরাবৃত্তি করে না, সম্ভবত একেবারেই নয়)) ফলাফলটি 30,117-শব্দ Venusian প্রবন্ধ


8 করছে না! সিউডো-এলোমেলো পছন্দ মানে আপনি একই শব্দটির পরপর consec টি পুনরাবৃত্তিটি দিয়ে বাধা পেতে পারেন?
ডেনিস

হ্যাঁ, তাত্ত্বিকভাবে।
গ্রেগ মার্টিন

@ গ্রেগমার্টিন আসলে ... আপনি যে প্রবন্ধটি লিঙ্ক করেছেন তা অনুপযুক্ত; vvaটানা ছয়বার উপস্থিত হয়। আমি মনে করি সম্ভবত আরও বড় সমস্যা আছে যদিও ... প্রতি বার উত্তরগুলি চ্যালেঞ্জ করা উচিত নয়? (এবং যদি তা না হয় তবে কীভাবে তাদের কাজ করার সম্ভাবনা রয়েছে তার রেখাটি আপনি কীভাবে
এইচ ওয়াল্টারস

এটি একটি ন্যায্য সমালোচনা, এবং এটি কীভাবে কার্যকর হয় তা দেখতে আমি আগ্রহী।
গ্রেগ মার্টিন

2

05AB1E ,34 33 32 বাইট

525DL/9*vNy<FD}})žMDâžNâJè3ô.rðý

525DL                            Yield [1, ..., 525]
     /                           Yield [525/1, ..., 525/525]
      9*                         Yield [4725/1, ..., 4725/525]. It's the number of occurences of each word. The sum of this array is greater than 30000
        v                        For each value (y = value, N = iteration counter starting from 0)
         N                       Push iteration counter
          y<FD}                  Push an array of "int(value)" times the iteration counter
               }                 End for
                )                Wrap everything in an array. At this point the array countains the sorted indices of all words that matches the frequency specs
                 žM              Push "aeiou"
                   Dâ            Cartesian product with itself (["aa", "ae", ...])
                     žN          Push the consonants
                       âJ        Cartesian product and join the values to make valid venutian words
                         è       Compute a big string with all words that correspond to the formerly computed indices
                          3ô     Since all words are concatenated, separate them into blocks of 3 letters
                            .r   Shuffle
                              ðý Join with whitespaces and implicitly display

এটি অনলাইন চেষ্টা করুন!

আমার মনে হয় এটি এখনও বেশ গল্ফযোগ্য! উদাহরণস্বরূপ সংখ্যার ধ্রুবক এবং vNy<FD}গল্ফযোগ্য হতে পারে।

আউটপুট উদাহরণ

এটা কিভাবে কাজ করে?

এটি "স্বর + স্বর + ব্যঞ্জনবর্ণ" নিয়ম অনুসরণ করে সমস্ত শব্দের সংমিশ্রণ উত্পন্ন করে, যা 525 অনন্য বৈধ শব্দ (200 এরও বেশি) করে। এরপরে এটি তাদের প্রত্যেককে একটি ফ্রিকোয়েন্সি যুক্ত করে f(x) = 4725/xযেখানে আইনটি সন্তুষ্ট করেxবর্তমান শব্দের র‌্যাঙ্কটি 1 থেকে শুরু হয়ে 525 এ শেষ হয় Then তারপরে ফ্রিকোয়েন্সিগুলি স্বাভাবিক এবং গুণিত হয় যাতে কমপক্ষে 30000 শব্দ রয়েছে। এই কোডটি জড়িত ধ্রুবকগুলিকে গল্ফযোগ্য করতে সর্বদা 32074 শব্দ দেয় (দয়া করে কোডের ব্যাখ্যাটি দেখুন)। সুতরাং প্রতিটি শব্দের একই শব্দের ফ্রিকোয়েন্সি অনুসারে সময়ের পরিমাণ পুনরাবৃত্তি হয়। অবশেষে শব্দগুলি এলোমেলো হয়। তবে এটি গ্যারান্টি দেয় না যে কোনও শব্দ এককভাবে পরপর পাঁচবার পুনরাবৃত্তি হয় না। সুতরাং প্রোগ্রামগুলি একটানা পাঁচ বার পুনরাবৃত্তি করার একটি শব্দ হওয়ার সম্ভাবনা হ্রাস করার জন্য প্রয়োজনীয় 200 অনন্য শব্দের চেয়ে বেশি উত্পন্ন করে। দয়া করে নোট করুন যে এই কোডটি সর্বদা একই শব্দ ক্রম উত্পন্ন করে। দুটি রানের মধ্যে পৃথক হওয়া একমাত্র জিনিসটি বদলানো অপারেশনের ফলাফল।

ফ্রিকোয়েন্সি মূল্যায়ন কিভাবে?

আমি একটি সাধারণ পাইথন 3 কোড তৈরি করেছি যা "আউটপুট" নামের ফাইলটিতে টেক্সটটি নিয়ে যায় (অ্যালগোরিদম দৃষ্টিকোণ থেকে, এটি উপলব্ধি করে!) এবং "stats.csv" এ আউটপুট দেয়।

from collections import Counter
from math import log10

with open("output", "r") as f:
    with open("stats.csv", "w") as stats:
        words = f.read().split()
        freqs = Counter(words)
        freqs = sorted([(i,freqs[i]) for i in freqs],key=lambda x:-x[1])

        print(len(words), "words")
        stats.write("logX;logF\n")
        for i, (key, f) in enumerate(freqs):
            stats.write(str(log10(i+1))+";"+str(log10(f))+"\n")

যা সর্বদা আমার কোডের জন্য নিম্নলিখিত বিতরণ করে: ফ্রিকোয়েন্সি আইন

সুতরাং opeাল -1.0138 হয়। পূর্ববর্তী কোডের opeালের তুলনায় এই মানটি এখন কম -1 এর কাছাকাছি, তবে এটি এখনও opeালের সীমাবদ্ধতাগুলি পূরণ করে।


ফ্রিকোয়েন্সি মূল্যায়নের জন্য স্ক্রিপ্টটির জন্য আপনাকে ধন্যবাদ, নোট করুন যে আপনার শেষে extra অতিরিক্ত রয়েছে। এছাড়াও, কেন আপনি বিভাজক হিসাবে সেমিকোলন ব্যবহার করবেন? csv সাধারণত কমা দ্বারা পৃথক মান;)
লিও

1
হ্যাঁ তুমি ঠিক আছ! আমি এক সেকেন্ডের জন্য মার্কডাউন নিয়ে বিভ্রান্ত হয়ে পড়েছি। আমি প্রথমে ইনলাইন কোডটি ব্যবহার করেছি, তারপরে বুঝতে পেরেছি যে এটি একটি কোড ব্লক ব্যবহার করা আরও উপযুক্ত তবে আমি অতিরিক্ত remove অপসারণ করতে ভুলে গিয়েছি ` আমি সিএসভি বিভাজক হিসাবে সেমিকোলন ব্যবহার করি কারণ আমি ফরাসি এবং কিছু সফ্টওয়্যার বা সংস্থাগুলি বিন্যাসের পরিবর্তে ডামাসের পরিবর্তে কোমাসের সাথে দশমিক মানগুলি ব্যবহার করতে ব্যবহৃত হয় যেমন আমরা হস্তাক্ষর দশমিক মান ব্যবহার করি। যদিও আমি সবসময় সংখ্যার অংশটিকে ভগ্নাংশের অংশ থেকে পৃথক করতে বিন্দু ব্যবহার করি, তবে আমি আরও চিন্তা না করেই সেমিকোলনটি ব্যবহার করি। কিন্তু হেই, ssv পাশাপাশি মহান;)
Osable

0

বাশ / কোর ইউটিলেস, 122 110 বাইট

for w in {b,c,d}{a,e,i}{f,g,h}{o,u,a}{j,k,l};{ let ++x;yes $w|head -$[5575/x];}|shuf --random-source=<(yes ae)

Unrolled:

for w in {b,c,d}{a,e,i}{f,g,h}{o,u,a}{j,k,l};{
    let ++x
    yes $w|head -$[5575/x]
}|shuf --random-source=<(yes ae)

for wলুপ 243 স্বতন্ত্র শব্দ তৈরি করে। let ++x;ইনক্রিমেন্ট প্রাথমিকভাবে আনসেট এক্স (প্রথম অঙ্কের সময় গাণিতিক অভিব্যক্তির নিয়মগুলিকে x0 হিসাবে গণ্য করা হয় এবং এভাবে এর বর্ধিতত্ব এটি 1 এ সেট করে)। পরের লাইনটি আনুমানিক জিপএফ ফ্রিকোয়েন্সি 5575 / x এ ফ্রিকোয়েন্সিতে উত্তরসূরি শব্দগুলি তৈরি করে।

পরবর্তী পদক্ষেপটি পুনরাবৃত্তি প্রয়োজনীয়তার সাথে মাপসই এই নির্বিচারে অনুমতি দেওয়া; --random-sourceএকটি বিশাল আকারের বড় পতাকা নাম থাকা সত্ত্বেও শূফের সাহায্যে এটি ব্যবহার করে একটি মুল-মোড নির্বাচককে ঘুরিয়ে বেঁধে ফেলে। yes aeআসলে আমি স্বল্পতম স্থির "র্যান্ডম" ডিভাইসটি মেনে চলতে পেরেছি।

এটি 33729 শব্দের রচনা [পেস্টবিন] জেনারেট করে ।

বাশ / কোর ইউটিস, 96 84 বাইট (প্রতিদ্বন্দ্বী)

অ-নিরস্তক পদ্ধতির জন্য, কেবল শুফ ফ্ল্যাগগুলি কেটে দিন:

for w in {b,c,d}{a,e,i}{f,g,h}{o,u,a}{j,k,l};{ let ++x;yes $w|head -$[5575/x];}|shuf

বিশ্লেষণ

জিপফ opeালটি সোজা হওয়ার জন্য সুর করা হয়। লগারিদমিক স্কেলগুলিতে প্লট করতে এক্সেল ব্যবহার করা:

শিক্ষকের = -1.000764 এর একটি জিপফ opeাল লক্ষ্য করা উচিত।

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