puppy
ยูทิลิตี้ต้องใช้ชื่อไฟล์เป็น input และไม่ว่าสิ่งที่คุณคาดว่าจะได้ลูกสุนัขที่จะทำมัน shreds มัน!
วิธีฉีก
ฉีกหน้าด้วยฟันของคุณแยกไฟล์อินพุตในบรรทัดใหม่ฉีกขึ้นแต่ละหน้ามีอุ้งเท้าของคุณสำหรับแต่ละบรรทัด (ไม่รวมเลื่อนบรรทัด), การเลือกสุ่มจำนวนเต็มดังกล่าวว่าn
2 <= n <= # of characters in the line
แบ่งบรรทัดออกเป็นn
สตริงย่อยที่ไม่ทับซ้อนกันซึ่งมีความยาวแบบสุ่มกระจายส่วนย่อยของพื้นกระจายเอาต์พุตย่อยแต่ละบรรทัดของแต่ละบรรทัดไปยังชื่อไฟล์สุ่มที่ไม่ซ้ำกัน ([a-zA-Z0-9]
เฉพาะส่วนขยายที่สอดคล้องกันใด ๆ รวมถึงไม่มีความยาว1 <= n <= 12
) ในไดเรกทอรีปัจจุบัน เขียนทับไฟล์ที่มีอยู่แล้วภายในไดเรกทอรีปัจจุบัน (รวมถึงไฟล์อินพุตหากอยู่ในไดเรกทอรีปัจจุบัน) ยอมรับได้ตราบใดที่ไฟล์นั้นไม่รบกวนการส่งข้อมูลของคุณ
ชี้แจง
- จะไม่มีการป้อนข้อมูลที่เป็นไปได้ที่จะใช้ชื่อไฟล์ที่เป็นไปได้ทั้งหมด
- ไฟล์จะประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้น (ปกติ 32-127) และ linefeeds และจะใช้ปลายบรรทัดสไตล์ UNIX / Linux (LF ไม่ใช่ CRLF สไตล์ Windows)
- บรรทัดใหม่ต่อท้ายเดียวในไฟล์เอาต์พุตสามารถยอมรับได้ตราบใดที่ไฟล์เอาต์พุตทุกไฟล์มีบรรทัดขึ้นบรรทัดใหม่ แต่ไม่จำเป็น คุณสามารถเลือกว่าจะให้ไฟล์อินพุตมีบรรทัดใหม่ต่อท้ายหรือไม่
- แต่ละบรรทัดในอินพุตจะมีอักขระอย่างน้อย 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