puppy
उपयोगिता इनपुट के रूप में एक फ़ाइल नाम लेता है, और वास्तव में आप एक पिल्ला करने के लिए उम्मीद करेंगे क्या: यह shreds!
कैसे बिखरना है
अपने दांतों के साथ पेजों को चीरदें नई लाइनों पर इनपुट फ़ाइल को विभाजित करें।अपने पंजेकेसाथ प्रत्येक पृष्ठ को फाड़ेंप्रत्येक पंक्ति के लिए (लाइनफीड सहित नहीं),n
ऐसे यादृच्छिक यादृच्छिक चुनें2 <= n <= # of characters in the line
।n
यादृच्छिक लंबाई के गैर-खाली गैर-अतिव्यापी सब्सट्रिंग में लाइन को विभाजित करें ।फर्श पर सभी कतरनों को बिखेरेंवर्तमान डायरेक्टरी में एक अद्वितीय यादृच्छिक फ़ाइल नाम ([a-zA-Z0-9]
केवल, किसी भी लगातार विस्तार सहित कोई भी संगत एक्सटेंशन1 <= n <= 12
) में प्रत्येक पंक्ति के प्रत्येक आउटपुट को आउटपुट करें । वर्तमान निर्देशिका के भीतर पूर्व-मौजूदा फ़ाइलों को अधिलेखित करना (इनपुट फ़ाइल सहित, यदि यह वर्तमान निर्देशिका में है) स्वीकार्य है, जब तक कि यह आपके सबमिशन रनिंग में हस्तक्षेप नहीं करती है।
स्पष्टीकरण
- एक इनपुट कभी नहीं होगा जहां सभी संभव फ़ाइल नाम का उपयोग करना संभव हो।
- फ़ाइलों में केवल मुद्रण योग्य ASCII (32-127 ऑर्डिनल्स) और लाइनफ़ीड शामिल होंगे, और UNIX / लिनक्स-स्टाइल लाइन एंडिंग्स (LF, न कि विंडोज-स्टाइल CRLF) का उपयोग करेगा।
- आउटपुट फ़ाइलों में एक एकल अनुगामी न्यूलाइन तब तक स्वीकार्य है जब तक कि प्रत्येक आउटपुट फ़ाइल में एक अनुगामी न्यूलाइन हो, लेकिन आवश्यक नहीं है। आप चुन सकते हैं कि इनपुट फ़ाइल में अनुगामी न्यूलाइन है या नहीं।
- इनपुट में प्रत्येक पंक्ति में कम से कम 2 अक्षर होंगे।
- चुने गए यादृच्छिक मूल्यों को संभावित मूल्यों के दिए गए सेट पर एक समान यादृच्छिक वितरण से चुना जाना चाहिए।
Iff आपकी भाषा फ़ाइल 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