puppy
উপযোগ ইনপুট হিসাবে একটি ফাইল নেয় এবং আপনি ঠিক একটি কুকুরছানা করতে আশা কী: এটা বিনষ্ট!
কিভাবে টুকরো টুকরো
আপনার দাঁত দিয়ে পৃষ্ঠাগুলি ছড়িয়ে দিননতুন লাইনে ইনপুট ফাইলটি বিভক্ত করুন।আপনার পা সহ প্রতিটি পৃষ্ঠা আপ বিছিন্ন(না লাইনফীড সহ) প্রতিটি লাইনে, একটি র্যান্ডম পূর্ণসংখ্যা বাছাইn
যেমন যে2 <= n <= # of characters in the line
।n
এলোমেলো দৈর্ঘ্যের অ-ফাঁকা নন-ওভারল্যাপিং সাবস্ট্রিংগুলিতে লাইনটি বিভক্ত করুন।সমস্ত তল জুড়ে শ্যাটারগুলি ছড়িয়েদিন বর্তমান ডিরেক্টরিতে প্রতিটি লাইনের প্রতিটি স্ট্রিংকে একটি অনন্য এলোমেলো ফাইল নাম ([a-zA-Z0-9]
কেবলমাত্র কোনও, কোনও দৈর্ঘ্য সহ কোনও ধারাবাহিক এক্সটেনশন1 <= n <= 12
) আউটপুট দিন । বর্তমান ডিরেক্টরিতে পূর্ব-বিদ্যমান ফাইলগুলিকে ওভাররাইটিং করা (ইনপুট ফাইল সহ, যদি এটি বর্তমান ডিরেক্টরিতে থাকে তবে) গ্রহণযোগ্য, যতক্ষণ না এটি আপনার জমা দেওয়ার ক্ষেত্রে হস্তক্ষেপ না করে।
ব্যাখ্যা
- এমন কোনও ইনপুট কখনই আসবে না যেখানে সম্ভাব্য সমস্ত ফাইল নাম ব্যবহার করা সম্ভব।
- ফাইলগুলি কেবল প্রিন্টযোগ্য এএসসিআইআই (অর্ডিনালস 32-127) এবং লাইনফিড সমন্বিত থাকবে এবং ইউএনআইএক্স / লিনাক্স-স্টাইলের লাইন এন্ডিংগুলি (এলএফ, উইন্ডোজ-স্টাইলের সিআরএলএফ নয়) ব্যবহার করবে।
- আউটপুট ফাইলগুলিতে একটি একক ট্রেলিং নিউলাইন যতক্ষণ না প্রতিটি আউটপুট ফাইলে ট্রেলিং নিউলাইন থাকে ততক্ষণ তা গ্রহণযোগ্য নয়। ইনপুট ফাইলটিতে একটি পিছনের নিউলাইন রয়েছে কিনা আপনি তা চয়ন করতে পারেন।
- ইনপুটটির প্রতিটি লাইনে কমপক্ষে 2 টি অক্ষর থাকবে।
- নির্বাচিত এলোমেলো মানগুলি অবশ্যই সম্ভাব্য মানের প্রদত্ত সেটটিতে অভিন্ন র্যান্ডম বিতরণ থেকে চয়ন করতে হবে।
যদি আপনার ভাষা I / O ফাইল সম্পাদন করতে অক্ষম হয় তবে আপনি পরিবর্তে ইনপুট ফাইলের বিষয়বস্তু এবং সেই ফাইলের আউটপুট ফাইলের নাম এবং পাঠ্যকে প্রতিনিধিত্ব করে স্ট্রিংয়ের আউটপুট জোড়া নিতে পারেন। তবে আপনার জমাটি জয়ের জন্য যোগ্য হবে না।
উদাহরণ
রেফারেন্স বাস্তবায়ন:
#!/usr/bin/env python3
import random
import string
import sys
fname = sys.argv[1]
with open(fname) as f:
txt = f.read().rstrip().split('\n')
for line in txt:
n = random.randint(2, len(line))-1
idxs = [0]+random.sample(range(1, len(line)), n)+[len(line)]
idxs.sort()
splits = []
for i in range(0, len(idxs)-1):
splits.append(line[idxs[i]:idxs[i+1]])
ofnames = []
for s in splits:
flen = random.randint(1, 10)
ofname = ''
while ofname == '' or ofname in ofnames:
ofname = ''
for i in range(flen):
ofname += random.choice(string.ascii_letters+string.digits)
ofnames.append(ofname)
with open(ofname, 'w') as f:
f.write(s)
উদাহরণ রান:
$ cat bestsong.txt
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you!
$ puppy bestsong.txt
$ ls
8675309
a
bestsong.txt
cSdhg
Dq762
jq7t
ret865
rick4life
weu767g
xyzzy
$ cat 8675309
esert you!
$ cat a
Never gonna let you down
$ cat cSdhg
ive y
$ cat Dq762
And d
$ cat jq7t
Never gonna g
$ cat ret865
run arou
$ cat rick4life
Never gonna
$ cat weu767g
nd
$ cat xyzzy
ou up