কুকুরছানা আদেশ


20

puppyউপযোগ ইনপুট হিসাবে একটি ফাইল নেয় এবং আপনি ঠিক একটি কুকুরছানা করতে আশা কী: এটা বিনষ্ট!

কুকুরছানা

কিভাবে টুকরো টুকরো

  1. আপনার দাঁত দিয়ে পৃষ্ঠাগুলি ছড়িয়ে দিন নতুন লাইনে ইনপুট ফাইলটি বিভক্ত করুন।
  2. আপনার পা সহ প্রতিটি পৃষ্ঠা আপ বিছিন্ন (না লাইনফীড সহ) প্রতিটি লাইনে, একটি র্যান্ডম পূর্ণসংখ্যা বাছাই nযেমন যে 2 <= n <= # of characters in the linenএলোমেলো দৈর্ঘ্যের অ-ফাঁকা নন-ওভারল্যাপিং সাবস্ট্রিংগুলিতে লাইনটি বিভক্ত করুন।
  3. সমস্ত তল জুড়ে শ্যাটারগুলি ছড়িয়ে দিন বর্তমান ডিরেক্টরিতে প্রতিটি লাইনের প্রতিটি স্ট্রিংকে একটি অনন্য এলোমেলো ফাইল নাম ( [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


উত্তর:


3

পাওয়ারশেল ভি 2+, 215 211 বাইট

nal d Get-Random;gc $args[0]|%{$b=d(0..($l=($t=$_).length)) -C(d(2..$l));$b=$b+0+$l|select -u|sort;0..($b.count-2)|%{-join($t[$b[$_]..($b[$_+1]-1)])}}|%{$_>(-join[char[]](d(48..57+65..90+97..122) -c(d(1..12))))}

ভি 1 Get-Randomউপলভ্য না হওয়ায় ভি 2 বা আরও নতুন প্রয়োজন ।
সম্পাদনা করুন - প্রতিটি চিঠি স্বতন্ত্রভাবে কাস্ট করার পরিবর্তে চার-অ্যারে কাস্টিং ব্যবহার করে 4 বাইট সংরক্ষণ করা হয়েছে

কিছুটা অবহেলিত

Get-Content $args[0]|ForEach-Object{
  $t=$_
  $l=$t.length
  $b=Get-Random(0..$l) -Count(Get-Random(2..$l))
  $b=$b+0+$l|Select-Object -unique|Sort-Object
  0..($b.count-2)|ForEach-Object{
    -join($t[$b[$_]..($b[$_+1]-1)])
  }
}|ForEach-Object{
  $_>(-join[char[]](Get-Random(48..57+65..90+97..122) -count(Get-Random(1..12))))
}

ব্যাখ্যা

সেটিং দিয়ে শুরু হয় dহিসেবে New-Aliasজন্য Get-Random, তাই আমরা জানতে টাইপ করতে হবে না Get-Randomপ্রতিটি সময় আমরা এটা (অনেক) ব্যবহার করছেন। আমরা তখন Get-Contentআমাদের ইনপুট $argsএবং পাইপের সাথে লুপটি দিয়ে থাকি |%{...}। নোট করুন যে Get-Contentডিফল্টরূপে নিউলাইনগুলিতে বিভক্ত হয়ে যাবে (হয় সিআরএলএফ বা কেবল এলএফ), সুতরাং আমাদের সেখানে অতিরিক্ত কিছু করার দরকার নেই।

লুপের প্রতিটি পুনরাবৃত্তি, আমরা এই লাইনটি গিনস'ড হতে চলেছে এমন টুকরো তৈরি করে শুরু করি । $tআমরা যে লাইনের সাথে কাজ করছি $lতার সমান এবং এর দৈর্ঘ্যের সমান সেট করুন , তারপরে সংগ্রহ সংগ্রহ করুন (0..$l)। এটি আমাদের বর্তমান লাইনে সমস্ত সম্ভাব্য অক্ষর সূচক উপস্থাপন করে। আমরা তখন Get-Randomমধ্যে থেকে (2..$l)নির্বাচন করতে কত তা নির্ধারণ করতে, এবং তারপর সূচকের একটি র্যান্ডম নম্বর পেতে যে সমান -count। এই সূচকগুলিতে সংরক্ষণ করুন $b

আমরা তখন এছাড়াও যোগ 0এবং $lকরতে $b, তাই আমরা আদ্যন্ত আমাদের লাইনের সূচকের সংগ্রহে হতে নিশ্চিত আছে। পাইপটি সেই পাইপটিকে Select-Objectসাথে সাথে -uপতাকাটি চিহ্নিত করুন, তারপরে পাইপ করুন Sort-Object, সুতরাং আমাদের সূচকগুলি এখন প্রথম অক্ষর দিয়ে শুরু করার এবং শেষ চরিত্রের সাথে শেষ হওয়ার গ্যারান্টিযুক্ত এবং এর মধ্যে কিছু এলোমেলো সংখ্যা রয়েছে।

এর পরে, আমরা সমস্ত সূচকের উপর লুপিং করছি $bসঙ্গে 0..($b.count-2)|%{...}। এই লুপের প্রতিটি পুনরুক্তি, আমরা টুকরা টুকরা করছি $t(আমাদের পাঠ্যের বর্তমান রেখাটি) এবং তারপরে -joinএগুলিকে স্ট্রিংয়ের সাথে যুক্ত করুন (চার-অ্যারের পরিবর্তে)। এগুলি বান্ডিল হয়ে পাইপলাইনে রেখে যায় এবং আমরা বাইরের লুপটি বন্ধ করি।

সুতরাং এখন আমাদের কাছে পাঠ্যের প্রতিটি লাইনের এলোমেলো টুকরোগুলির একটি ইন-অর্ডার সংগ্রহ রয়েছে। (অর্থ, এই মুহুর্তে, আমরা যদি -joinএগুলিকে আবার একসাথে সম্পাদনা করি তবে আমরা মূল পাঠ্য বিয়োগ নিউলাইনগুলি পেয়ে যাব)) তারপরে আমরা সেই সংগ্রহটি অন্য লুপের মাধ্যমে পাইপ করব |%{...}এবং প্রতিটি পুনরাবৃত্তির সাহায্যে আমরা এই ফালিটি একটি ফাইলে আউটপুট করছি $_>...। ফাইলটি 1 থেকে 12 এলোমেলো পূর্ণসংখ্যা যা ASCII কোডের সাথে মিলে যায় তা নিয়ে তৈরি করা হয়েছিল [0-9A-Za-z]। কোনও ফাইলের এক্সটেনশন থাকবে না এবং >কমান্ডটি প্রতিটি ফাইলে ডিফল্টরূপে একটি নতুন লাইনের আউটপুট দেয়।

উদাহরণ

উদাহরণ রান

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