নাম বেনাম করুন - সাজানো


16

সম্পাদনা করুন: এলোমেলো মাস্কিংয়ের জন্য -20 এর বোনাস থাকবে

হ্যালো সহকর্মী হুইসেল ব্লোয়ার্স এবং গোপন জ্ঞানের বাহক।

আমি মেলের মাধ্যমে একটি সাক্ষাত্কারের কারণে এবং আমি - অবশ্যই - পূর্ণ দৈর্ঘ্যে নির্দিষ্ট নাম বলতে পারি না। তবে আমি এটি প্রকাশের চেয়ে বরং সুস্পষ্টভাবে প্রকাশ করতে চাই বলে আমার সহায়তা দরকার।

এই আকারগুলি আমি আকারে সরবরাহ করব

"Evil_company_that_makes_me_shiver"

তবে অবশ্যই আমি এটি পুরোপুরি বানান করতে চাই না। আমাকে এবং পুরো বিশ্বকে সহায়তা করার জন্য আপনার কাজটি হ'ল আপনি একটি দুর্দান্ত প্রোগ্রাম সরবরাহ করেছেন যা উপরেরটিকে রূপান্তরিত করে

"ev**************************"

অথবা

"**il************************"

অথবা এমনকি

"****_c**********************"

আমি মনে করি আপনি এটি পেয়েছেন। তবে একটি ত্রুটি আছে: আমি নামটি মোটে প্রকাশ করতে চাই, তাই আমাকে ঘটনার সংখ্যা এবং শব্দটি নিজেই স্ক্রিপ্টে পাস করতে হবে এবং এটি অক্ষরগুলি অল্প অল্প করে প্রকাশ করবে। একটি উদাহরণ হতে পারে

~$ ./whistle NSA 3
> "N**"
> "**A"
> "*S*"

অথবা

~$ ./whistle nuclear 3
> "nu*****"
> "***lea*"
> "**c***r"

অথবা

~$ ./whistle nuclear 2
> "nuc****"
> "***lear"

আমি আশা করি আপনি আমাকে সহায়তা করতে পারেন এবং আমরা জানি যে আকারটি সংক্ষিপ্ততম কোড জয়ের বিষয়ে গুরুত্বপূর্ণ। এই বিশ্বের উন্নত জায়গা করতে সহায়তা করুন!


1
মাস্কিংটি কীভাবে হওয়া উচিত সে সম্পর্কে আপনি কোনও বিবরণ দেন না, সুতরাং আপনার উদাহরণগুলি বিবেচনা না করেই সংক্ষিপ্ততম কোডটি যা পাওয়া উচিত।
বিল উড্ডার

আমি ভেবেছিলাম যে এটি স্পষ্ট যে সংক্ষিপ্ততম কোডটি জিতেছে? হুঁ, সম্ভবত আমার এটির সাথে আমার ইংরেজি ব্যাকরণটি আরও উন্নত করা দরকার :( / সম্পাদনা: মাস্কিং কীভাবে করা হয় তাতে আমি সত্যিই যত্নশীল নই, উপরেরটি কেবল একটি উদাহরণ, তবে আপনি যদি কোনও একরেন্স পড়েন তবে এটি "অপঠনযোগ্য" হওয়া উচিত একা "
জার্মানি_গুই 9

হ্যাঁ, সংক্ষিপ্ততম কোডটি পরিষ্কার ছিল। তবে আপনি বেশিরভাগই "নিয়মিত" মাস্কিং পাবেন, আপনার নমুনাগুলির মতো নয়। সম্ভবত, যেহেতু আপনার কোনও আপত্তি নেই, তাই আপনার নমুনা আউটপুটগুলিকে নিয়মিতভাবে পরিবর্তন করুন। বিশেষত এটির আপনার দ্বিতীয় উদাহরণ চলমান, এবং আপনার প্রশ্নের উদাহরণ
বিল উড্ডার

1
অথবা আপনি এলোমেলো মাস্কিংয়ের জন্য বোনাস পেতে পারেন।
Apuʎs

উত্তর:


12

গল্ফস্ক্রিপ্ট, ২ cha টি পাঠক

যেহেতু প্রকাশের কোনও নির্দিষ্ট উপায় নির্দিষ্ট করা হয়নি আমি সংক্ষিপ্ততমের জন্য যাবার সিদ্ধান্ত নিয়েছি:

:f,\`{{\)f%.!@42if}%\;n}+%

আপনি এই কোডটি অনলাইনে পরীক্ষা করতে পারেন ।

উদাহরণ:

> "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 7
******G******N******U*****
*****F******M******T******
****E******L******S******Z
***D******K******R******Y*
**C******J******Q******X**
*B******I******P******W***
A******H******O******V****

মন্তব্য করা কোড:

:f           # Save the second input to variable f
,            # Makes the array [0 1 2 .... f-1]
\`{          # \´{}+% builds a code block where
             # first the input string is pushed (done
             # via the + operator and afterwards the whole
             # block is applied to above array, i.e.
             # For each line 0, 1, ...                                                
             #   Here, the stack contains the line number (counter)
             #   and the string
  {          #   {}% -> map to each character of the string
             #     Stack contains counter and current character
    \)f%     #     Increase the counter by one and calculate modulo f
    .        #     Duplicate counter (will be used for the if below)
    !        #     and test for zero 
             #     I.e. if counter==0
    @        #       Then Current character
    42       #       Else 42 (which is '*')
    if       #     
  }%         #   The mapping operation masked most of the characters
  \;         #   Discard the counter
  n          #   Add newline
}+%      

নিস! কোডটির প্রতিটি অংশ কী করে আপনি ব্যাখ্যা করতে পারেন?
জন ওডম

9
দেখতে পাচ্ছেন না কেন। গল্ফস্ক্রিপ্ট তাই স্ব-ডকুমেন্টিং।
ইভপোক

@ জনঅডম তবুও আমি কোডটিতে কিছু মন্তব্য যুক্ত করেছি।
হাওয়ার্ড

আপনি যদি এলোমেলোভাবে সিদ্ধান্ত নেন যে আপনি সমস্ত * কে একের পর এক ডানে স্থানান্তরিত করতে যাচ্ছেন, তবে এলোমেলো মাস্কিং বোনাসের জন্য এটি গণনা করে?
ক্রাঙ্কার

7

পিএইচপি - 80 বাইট

<?for(;($c=$argv[1][~-$i+=1])?:$k^++$j;)echo$c?$i%$k=&$argv[2]^$j?'*':$c:$i='
';

নমুনা ব্যবহার:

$ php whistle-blower.php ABCDEFGHIJKLMNOPQRSTUVWXYZ 7
******G******N******U*****
A******H******O******V****
*B******I******P******W***
**C******J******Q******X**
***D******K******R******Y*
****E******L******S******Z
*****F******M******T******

7

পাইথন ( 157 149 139 138-20 = 118):

def f(a,b):
 from random import*;c=[["*"]*len(a) for i in range(b)]
 for d in range(len(a)):choice(c)[d]=a[d]
 for e in c:print "".join(e)

চিজি পাইথন ( 55 35):

আপনি আমাকে প্রয়োজনীয় বিতরণ জানাননি;)

g=lambda a,b:["*"*len(a)]*(b-1)+[a]

অভিন্ন পাইথন ( 129 123 122):

def h(a,b):
 c=[["*"]*len(a)for i in range(b)]
 for d in range(len(a)):c=c[1:]+c[:1];c[0][d]=a[d]
 for e in c:print"".join(e)

আউটপুট:

a="Synthetica 'Evil' the Second"
b=7
f(a,b)
print
for i in g(a,b): print i
print
h(a,b)

দেয়

***t***i***'***** *********d
******************t** ******
******t*** ***********Se**n*
S**************l****e*******
*y******c***E************o**
**n*h****a**************c***
*****e*******vi*'**h********

****************************
****************************
****************************
****************************
****************************
****************************
Synthetica 'Evil' the Second

******t******v******e******d
S******i******i****** ******
*y******c******l******S*****
**n******a******'******e****
***t****** ****** ******c***
****h******'******t******o**
*****e******E******h******n*

আপনার চিটসি অজগরটি সংক্ষিপ্ত করা যেতে পারে g=lambda a,b:[a]+["*"*len(a)]*(b-1)। : পি
সিজেফুরে

@ ট্রাইস্টি আমি দেখছি, ধন্যবাদ :)
Apউস

3
আমি মনে করি তবে অবশ্যই আমি এটিকে বানান বলতে চাই না পুরোপুরি পরিষ্কারভাবে একটি সমাধানকে অকার্যকর করে যা নিশ্চিত করে না যে আউটপুটের প্রতিটি লাইনে কমপক্ষে একটি চরিত্রের মুখোশ রয়েছে।
হাওয়ার্ড

@ আমি জানি যে এটি নিয়মগুলি প্রসারিত করছে তবে এর disclose the letters bit by bitঅর্থও হতে পারে first, disclose the first bit (that just happens to be the entire thing), repeat until the b is met। এটি প্রথম উত্তরের জন্যও ঘটতে পারে, তাই কেবল দাবি করুন যে আপনি এটি ব্যবহার করেছেন, এবং এই ফলাফলটি উত্সাহিত করতে আগ্রহী। (আমি কেবল বুঝতে পেরেছি যে আপনি এটি লিখতেও পারেন ["*"*len(a)]*(b-1)+[a], যাতে আপনি বিটগুলি প্রকাশ করে শুরু করেন যা কেবলমাত্র 0 টি বাইট রয়েছে আসল তথ্যের সাথে, এবং শেষ লাইনে আপনি অন্য কিছু প্রকাশ করেন)) তবে আমি বুঝতে পারি, এটি সর্বাধিক প্রসারিত হয়।
0uʎs

3

বাশ, 80 বাইট

m=${1//?/*}
for((i=1;d=i*${#1}/$2,i++<=$2;c=d)){
echo "${m:0:c}${1:c:d-c}${m:d}"
}

কর্মে:

/ ./anon.sh স্ট্যাকওভারফ্লো.কম 6
St ***************
** ACK ************
***** কুমার *********
******** আরএফএল ******
*********** Ow। ***
************** কম
$ 

2

সি #, 226

যদি আপনি এলোমেলো স্টাফগুলিকে আরও সাধারণ বিতরণ (মডুলাস ভাবেন) দিয়ে প্রতিস্থাপন করেন তবে এটিকে ছাঁটাই করা যেতে পারে তবে এলোমেলোতাই আমাকে আগ্রহী করে তুলেছে। =)

যাইহোক, সমস্ত কিছু কেবল একটি লাইনে রেখে আমি 226 টি অক্ষর পাই। পঠনযোগ্য কোডে এটি দেখতে এরকম দেখাচ্ছে:

private void F(string n, int i)
{
    var l = n.Length;
    var r = new Random();
    var a = new string[i];

    for (var p = 0; p < l; p++)
    {
        var x = r.Next(0, i);
        for (var j = 0; j < i; j++)
        {
            a[j] += j == x ? n.Substring(p, 1) : "*";
        }
    }

    for (var j = 0; j < i; j++)
    {
        Console.WriteLine(a[j]);
    }
}

নমুনা আউটপুট:

Anonymize.exe ABCDEFGHIJKLMNOPQRSTUVWXYZ 7
*****F**I**********T**W***
A*****************S****X**
**CDE**H*JKL**************
*************N************
**************O*****U****Z
*B****G*****M***QR********
***************P*****V**Y*

এটি কি সর্বদা ইনপুট থেকে অন্তত চরিত্রের গ্যারান্টি দেয়?
বিল উড্ডার

হুম .. না, সম্ভবত না; ভালো বল ধরা. সংক্ষিপ্ত স্ট্রিং এবং আপনার নিম্ন মানের জন্য iসম্ভবত শেষ হতে পারে ***/test
ডারোবি

2

পার্ল, 24

$_ x=<>;s/(.|
)./\1*/g

-pস্যুইচটি প্রয়োজন , যা বাইটগুলির মধ্যে দুটির জন্য অ্যাকাউন্ট করে। এসটিডিআইএন থেকে পড়া।

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

  • -pস্যুইচটির কারণে , পার্ল প্রথম ইনপুট মিথ্যা পড়ে এবং এর সামগ্রীগুলি এতে সঞ্চয় করে $_

  • $_ x=<>;দ্বিতীয় ইনপুট লাইন ( <>) নির্দিষ্ট করার সময় কমান্ডটি প্রথম ইনপুট লাইনটিকে নকল করে ।

  • কমান্ডটি s/(.|\n)./\1*/g;দুটি অক্ষর গ্রাস করে এবং দ্বিতীয়টি (যা নতুন লাইন হতে পারে না )টিকে একটি নক্ষত্রের সাথে প্রতিস্থাপন করে। এটি এর সম্পূর্ণ সামগ্রীর গ্রাস না হওয়া অবধি এটি করে $_

    যেহেতু নিউলাইনগুলি প্রথম অক্ষর হিসাবে গণনা করছে, এটি প্রথম লাইনের সমস্ত এমনকি অক্ষর এবং বাকী রেখার সমস্ত বিজোড় অক্ষরকে বিস্মৃত করবে।

  • -pস্যুইচ করার কারণে , পার্ল এর সামগ্রীগুলি মুদ্রণ করে $_

উদাহরণ ইনপুট

codegolf
4

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

c*d*g*l*
*o*e*o*f
*o*e*o*f
*o*e*o*f

সদৃশ স্ট্রিং, খুব পরিষ্কার নয় ...
CSᵠ

আপনি কী ভাবেন যে ইনপুটটি দুটি লাইনে রাখলে আপনি গোলমাল করতে পারেন?
বিল উড্ডার

@ বিলউইডগার: প্রশ্নটি ইনপুটটির কোনও ফর্ম নির্দিষ্ট করে না।
ডেনিস

যথেষ্ট ফর্সা। couldআপনাকে :
বিল বিল্ডার

Since newlines count as the first character, this will obfuscate all even characters on the first line and all odd characters on the remaining lines.এটির মতো শব্দগুলি ব্যর্থ হবেcodegolf\n1
ক্রুঙ্কার

1

জাভা - 490

হ্যাঁ, সত্যিই গল্ফ বা কিছু নয়। ওহ ভাল, এটি এখানে:

import java.util.ArrayList;public class Anonymise {public static void  main(String[] args){ArrayList[] c=new ArrayList[Integer.parseInt(args[1])];for(int i=0;i<c.length;i++)c[i]=new ArrayList();for(char a:args[0].toCharArray()){int f=new java.util.Random().nextInt(c.length);c[f].add(a);for(int i=0;i<c.length;i++)if(i!=f)c[i].add('*');}ArrayList<String> b = new ArrayList<String>();for(ArrayList a:c){String s = "";for(Object o : a)s += o;b.add(s);}for(String s : b)System.out.println(s);}}

একটি সুন্দর, সুস্পষ্ট বিন্যাসে:

import java.util.ArrayList;

public class Anonymise {

public static void main(String[] args){
    ArrayList[] c = new ArrayList[Integer.parseInt(args[1])];
    for(int i=0;i<c.length;i++)
        c[i]=new ArrayList();
    for(char a:args[0].toCharArray()){
        int f = new java.util.Random().nextInt(c.length);
        c[f].add(a);
        for(int i=0;i<c.length;i++)
            if(i!=f)c[i].add('*');
    }
    ArrayList<String> b = new ArrayList<String>();
    for(ArrayList a:c){
        String s = "";
        for(Object o : a)
            s += o;b.add(s);
    }
    for(String s : b)
        System.out.println(s);
}
}

নমুনা ব্যবহার (সংকলিত শ্রেণি থেকে চালানো হয়)

> java Anonymise OnlinePerson 3
*n****P***o*
O*li***e****
****ne**rs*n

আপনি এটি চালাচ্ছেন বা টাইপ করছেন? কীভাবে পি হতে পারে?
বিল উড্ডার

সমস্যা নেই. এখনই ব্যবহৃত মন্তব্যগুলি পরিপাটি করুন
বিল উড্ডার

শুধু import java.util.*এছাড়াও, ArrayList<String> = new ArrayList<>();কাজ করবে। আপনি প্রচুর স্থান সরিয়ে ফেলতে পারেন। এবং বেশিরভাগ সময় আপনি এর Listপরিবর্তে ব্যবহার করতে পারেন ArrayList
Ypnypn

1

পাইথন 3 - 187 (-20 = 167)

লেখার জন্য আমাকে কিছুটা সময় নিয়েছে, সম্ভবত আরও গল্ফ করা যেতে পারে।

import sys,random as a
b=sys.argv
x=[""for i in' '*int(b[2])]
for i in range(len(b[1])):n=a.randrange(len(x));x=[c+["*",b[1][len(c)]][j==n]for j,c in enumerate(x)]
for i in x:print(i)

নমুনা ব্যবহার:

$ python tx.py super_anonymous_user 3
s******n**y*ou****e*
**p***a**n*m**s_us*r
*u*er_**o***********

একটি ফাংশন হিসাবে - 161 (-20 = 141)

from random import*
def f(c,n):
    x=[""for i in' '*n]
    for i in range(len(c)):n=randrange(len(x));x=[v+["*",c[len(v)]][j==n]for j,v in enumerate(x)]
    return x

এটি কি সর্বদা ইনপুট থেকে অন্তত চরিত্রের গ্যারান্টি দেয়?
বিল উডগার

@ বিলডুডজার নং
সিজেফুরে

2
দুঃখিত, ব্যক্তিগতভাবে আমি এটিকে তখন কাজ করে না বলে বিবেচনা করি। তারপর।
বিল উডগার

জিনিসগুলি সংক্ষিপ্ত করার কয়েকটি সহজ উপায়: sys.argvঅ্যাসাইনমেন্টটি আনপ্যাক করুন এবং ( আর আনপ্যাকিংয়ের ক্ষেত্রে আপনি যে ভেরিয়েবলটি ব্যবহার করেন তার নাম দিয়ে প্রতিস্থাপন করুন) xহিসাবে আরম্ভ করুন । x=['']*int(b[2])b[2]
ব্যবহারকারী 2357112

2
আমি মনে করি তবে অবশ্যই আমি এটিকে বানান বলতে চাই না পুরোপুরি পরিষ্কারভাবে একটি সমাধানকে অকার্যকর করে যা নিশ্চিত করে না যে আউটপুটের প্রতিটি লাইনে কমপক্ষে একটি চরিত্রের মুখোশ রয়েছে।
হাওয়ার্ড

1

সি # 184

namespace System.Linq{class P{static void Main(string[] a){int n=int.Parse(a[1]);for(int i=0;i<n;i++)Console.WriteLine(new String(a[0].Select((c,x)=>(i+x)%n==0?c:'*').ToArray()));}}}

অ golfed

namespace System.Linq
{
    class P
    {
        static void Main(string[] a)
        {
            int n = int.Parse(a[1]);
            for (int i = 0; i < n; i++)
                Console.WriteLine(new String(a[0].Select((c, x) => (i + x) % n == 0 ? c : '*').ToArray()));
        }
    }
}

নমুনা:

> Anonymize.exe "qwertyuio" 4
q***t***o
***r***i*
**e***u**
*w***y***

1

পার্ল 6 (77 বাইট)

এটি প্রতারণার হিসাবে গণ্য হতে পারে তবে এটি সমস্যার সমাধান করে (এটি স্ট্রিংটি পুরোপুরি মুদ্রণ করে না)।

($_,$!)=@*ARGS;.say for .chop~"*","*"x.chars-1~.substr(*-1),"*"x.chars xx$!-2

এবং নমুনা আউটপুট।

> ./script.p6 ultimately_awesome 6
ultimately_awesom*
*****************e
******************
******************
******************
******************

1

জাভাস্ক্রিপ্ট - 170

function s(a,e){o="",b=a.length,x=b/e|0,y=b-x*e;for(c=1;c<=e;c++){r="*";o+=Array((c-1)*x+1).join(r)+a.substr(c*x-x,c==e?x+y:x)+Array(c<e?b-c*x+1:0).join(r)+"\n"}return o}

দ্রুত, আপনি যদি কোনও নাম সরবরাহ করেন এবং অক্ষরের চেয়ে আরও টুকরো জিজ্ঞাসা করেন তবে তা বিরতি দেয় তবে এটি এখন পর্যন্ত কাজ করে 1.

সম্পাদনা করুন: (টুথব্রাশ) থেকে বন্ধনী (@ সায়েন্টিকা) এবং ম্যাথ.ফ্লুর রিপ্লেসমেন্ট অপসারণের সাথে আরও (187 থেকে) গল্ফ হয়েছে। লুপ পরিবর্তনের জন্য প্রস্তাবিত ফলাফল হিসাবে আউটপুটটিতে ত্রুটি রয়েছে।


function s(d,a){o="";b=d.length;x=Math.floor(b/a);y=b-x*a;for(c=1;c<=a;c++)r="*",o+=Array((c-1)*x+1).join(r)+d.substr(c*x-x,c==a?x+y:x)+Array(c<a?b-c*x+1:0).join(r)+"\n";return o}; বন্ধ-compiler.appspot.com/home 8 টি অক্ষর শেভ করতে সক্ষম ছিল;)
Apউস

আপনি কি বলছেন যদি পাঠ্যটি পাঁচটি অক্ষর হয় এবং এটি ছয়টি প্রতিস্থাপনের জন্য ভাঙা হয়?
বিল উডগার

@ বিলউইডগার তিনি বলেছিলেন যে ক্লোজার সংকলকটি ব্যবহার করে তিনি কোডের মোট দৈর্ঘ্য থেকে ৮ টি অক্ষর শেভ করেছেন।
এডুয়ার্ড ফ্লোরিইনসকু

@ এডওয়ার্ডফ্লোরাইনস্কু, দুঃখিত, আমি অস্পষ্ট ছিলাম, আমি এই বিটটি বোঝাতে breaks if you supply a name and ask for more pieces than characters
চাইছিলাম

1
x=b/e|0পরিবর্তে ব্যবহার করুন x=Math.floor(b/e)। এছাড়াও, for(c=1;c<=e;c++)সংক্ষিপ্ত করা যেতে পারে for(c=1;c++<=e;)
টুথব্রাশ

1

আর, (120-20) = 100 বাইট (একই দৈর্ঘ্যের 2 টি পৃথক সমাধান)

সংক্ষিপ্ততার পাশাপাশি, নিশ্চিতরূপে আর সেরা র্যান্ডম নম্বর জেনারেটরের বৈশিষ্ট্য রয়েছে! :) এখানে দৈর্ঘ্যের প্রথম সমাধানটি 120:

function(s,n){
  c=strsplit(s,"")[[1]]
  e=sample(n,nchar(s),T)
  sapply(1:n,function(i)paste(ifelse(e==i,c,"*"),collapse=""))
}

যদি ফাংশনটির নাম এফ হিসাবে রাখা হয় তবে আউটপুটটি দেখতে এমন মনে হয়:

> f("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 7)
"******GH*****************Z" 
"ABCD*********N************" 
"***********L**O***********"
"*********J**M**P*RS*U**X**" 
"**********K***********W***" 
"*****F**I*******Q*********"
"****E**************T*V**Y*"

এবং এখানে দ্বিতীয় সমাধান, আবার এলোমেলো মাস্কিং সহ এবং আবার 120 বাইট দীর্ঘ:

function(s,n){
  x=matrix("*",n,(m=nchar(s)))
  x[cbind(sample(n,m,T),1:m)]=strsplit(s,"")[[1]]
  apply(x,1,paste,collapse="")
}

0

স্কালা (1) 177 বাইট

আরআই এর সমাধানের পরেও স্কালায় একটি পাওয়া যায়, এটি এখানে:

def f(s:String, n:Int)={
  def c=s map (z=>z.toString)
  def r=(1 to s.length) map (v=>v%n+1)
  (for (i<-1 to n) yield s zip r map (t=>if(t._2==i) t._1 else "*") mkString "") map println
}

স্কালা (2) 129 বাইট

একটি সংক্ষিপ্ত গবেষণা পরে আমি পঠন পদ্ধতি zipWithIndex খুঁজে পেয়েছি । অপূর্ব :)

def f(s:String, n:Int)={
  (for (i<-0 until n) yield s.zipWithIndex.map (t=>if(t._2 % n==i) t._1 else "*") mkString "") map println
}

সমাধান এখানে:

f("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4)
***D***H***L***P***T***X**
A***E***I***M***Q***U***Y*
*B***F***J***N***R***V***Z
**C***G***K***O***S***W***

0

জাভাস্ক্রিপ্ট - 166

function s(b,a){o="";k=Array(a).join("*");t=k+b+k;for(i=a;0<i;i--)o+=t.replace(RegExp(".{"+(a-1)+"}(.)","g"),k+"$1").substr(i-1,b.length)+"\n",t=t.substr(1);return o}

রেজেক্স ব্যবহার করা হচ্ছে।

নমুনা

> s("four",5)                      
f***                            
*o**                             
**u*                             
***r                             
****                             

> s("evil_company_that_makes_me_shiver",3)
e**l**o**a**_**a**m**e**m**s**v**
*v**_**m**n**t**t**a**s**e**h**e*
**i**c**p**y**h**_**k**_**_**i**r

0

কে [৫০-২০ = ৩০ টি চর]

{.{@[y#"*";z;:;x z]}[x;c]'=_d*y%#d:<<(-d)?!d:c:#x}

ব্যাখ্যা

  1. ইনপুট: x = স্ট্রিং যা মুখোশ করা দরকার, y = রেখার সংখ্যা
  2. অক্ষরে সি এর স্ট্রিংয়ের সংখ্যা গণনা করুন এবং y বালতি তৈরি করুন।
  3. প্রতিটি বালতিতে সি মোড y অক্ষর রাখুন।
  4. প্রতিটি বালতির জন্য, সেই বালতিতে নেই এমন বাকী সংখ্যার জন্য "*" মুদ্রণ করুন।

উদাহরণ

{.{@[y#"*";z;:;x z]}[x;c]'=_d*y%#d:<<(-d)?!d:c:#x}["abcdefghijklmnopqrstuvwxyz";4]

আউটপুট

"ab*d*f***j**********u*w***"
"**c*e*gh**k*****q*s*******"
"********i***mn*****t*v**y*"
"***********l**op*r*****x*z"

0

জাভাস্ক্রিপ্ট - 139-20 = 119

function e(s,c){r=[];for(i=c;i--;)r[i]='';for(i=0;i<s.length*c;i++)x=i%c,n=(x<1?Math.random()*c|0:n),r[x]+=(n!=x?'*':s[(i/c)|0]);return r}

ব্যবহার এবং নমুনা আউটপুট:

console.log(e("evil_company_that_makes_me_shiver", 3));

["**i*_**mp*****h**_ma**********v**", 
 "*****co**a***t*a******s*me_*hi*e*", 
 "ev*l******ny_***t***ke*_***s****r"]

যেহেতু মুখোশটি এলোমেলো, আউটপুটটিও এর মতো দেখাতে পারে:

console.log(e("evil_company_that_makes_me_shiver", 2));

["evil_company_that_makes_me_shiver", 
 "*********************************"]

0

জুলিয়া 56-20 = 36 (প্রায়শই কাজ করে)

f(s,n)=[join([rand()<1.9/n?c:"*" for c in s]) for r=1:n]

julia> f("evilcompany!!!",4)
4-element Array{Union(UTF8String,ASCIIString),1}:
 "e**l**mp*ny*!*"
 "***lco********"
 "e*il**m*a*y!*!"
 "evil**m*an***!"

একটি সংক্ষিপ্ত এলোমেলো সমাধানের জন্য চেষ্টা করার চেষ্টা করেছি আমি একটি সংক্ষিপ্ত সমাধানের জন্য গ্যারান্টিযুক্ত কার্যকারিতা ত্যাগ করার সিদ্ধান্ত নিয়েছি। এটি আসলে খুব ভাল সমাধান নয়।


0

এফ # - 81 80 75

এটি যে অন্যদের দেওয়া হয়েছে তার সাথে মোটামুটি মিল:

let a s n=[for i in 0..n-1->String.mapi(fun j c->[c;'*'].[min((j+i)%n)1])s]

নমুনা:

a "evil_company_that_makes_me_shiver" 7

e******m******h******e******h**** 
******o******t******k******s***** 
*****c******_******a******_****** 
****_******y******m******e******r 
***l******n******_******m******e* 
**i******a******t******_******v** 
*v******p******a******s******i*** 

সম্পূর্ণরূপে, একা থাকা অ্যাপ্লিকেশন হিসাবে এটি 160 155 156 টি অক্ষরে প্রকাশিত হয়:

[<EntryPoint>]let m (a:string array)=
 let n=System.Int32.Parse a.[1]
 for i in 0..n-1 do printfn"%s"(String.mapi(fun j c->[c;'*'].[min((j+i)%n)1])a.[0])
 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.