পাঠ্যে টাইপগুলি .োকান


63

আমি কিছু পাঠ্য লিখেছি, তবে এটি খুব পেশাদার দেখাচ্ছে। আমি এটি দেখতে এমনভাবে তৈরি করতে চাই যখন আমি এটি লিখেছিলাম তখন আমি সত্যিই ক্লান্ত হয়ে পড়েছিলাম। আমার কিছু টাইপস sertোকানো দরকার।

আপনার চ্যালেঞ্জটি হ'ল পাঠ্যের একটি স্বেচ্ছাসেবী একক লাইন নেওয়া এবং টাইপগুলি যুক্ত করা। এর অর্থ হ'ল প্রতিটি চরিত্রের জন্য এটি টাইপযুক্ত হওয়ার জন্য 10% সুযোগ থাকবে।

"টাইফোফাইড" এর সংজ্ঞাটি হ'ল আপনাকে অবশ্যই নীচের একটি পছন্দ করতে (এলোমেলোভাবে):

  • চরিত্রটির সদৃশ করুন।
  • চরিত্রটি মুছুন।
  • একটি কীবোর্ড স্পেস অক্ষর স্থানান্তর করুন। "কীবোর্ড" হিসাবে সংজ্ঞায়িত করা হয়:

    qwertyuiop
    asdfghjkl
     zxcvbnm
    

    ক্যারেক্টার শিফ্টের জন্য আপনার অবশ্যই একটি স্পেস উপরে, নীচে, বাম বা ডানদিকে যেতে হবে। এটি অবশ্যই এলোমেলোভাবে নির্বাচন করা উচিত। শিফট বিকল্পটি কেবল বর্ণানুক্রমিক অক্ষরের ক্ষেত্রে প্রযোজ্য। কেস সংরক্ষণ করতে হবে। প্রান্তের ক্ষেত্রে সতর্ক থাকুন, পছন্দ করুন m!

"এলোমেলো" সংজ্ঞাটি হ'ল ফলাফলটি অনুমানযোগ্য হতে হবে না (পূর্ববর্তী ফলাফলগুলি দেখে)। উদাহরণস্বরূপ, আপনি প্রতি দশম অক্ষর টাইপফি করতে পারবেন না। তদতিরিক্ত, এলোমেলো একটি অবশ্যই বিতরণ থাকতে হবে। উদাহরণস্বরূপ, আপনি 30% সদৃশ, 30% মোছা এবং 40% শিফট করতে পারবেন না; এটি প্রত্যেকের জন্য 1/3 সুযোগ হতে হবে (এটি যদি কোনও নাল্লাব্যাটিক চরিত্রের হয় তবে প্রত্যেকের জন্য 1/2)।

উদাহরণ ইনপুট:

This is some correct text. It is too correct. Please un-correctify it.

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

This iissome xorreect tex..  It is too coteect. Please jn-corretify it.

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।


4
দুর্ঘটনাক্রমে ক্যাপস্লক কীটি স্ট্রাইক করা সম্পর্কে কী? যখন কোনও একটি "এ" বা "জেড" টাইপ করে, তখন এলোমেলো সুযোগ হওয়ার সম্ভাবনা থাকা উচিত যা তারা পরিবর্তে ক্যাপস্লোকে আঘাত করবে, এনডি এন্ড ইউ ও লাইক এটিকে।
জে ম্যানসফিল্ড

2
@ এজেম্যানসফিল্ড লোল, এটি সম্ভবত খুব জটিল হবে। এটি ইতিমধ্যে এটি যথেষ্ট জটিল: পি
ডুরকনব

1
@ user2509848 আরে, থামাও, এঙ্কিং করা, আকরিক কো, এটি ইতিমধ্যে রয়েছে এর চেয়ে কম! :
ডুরকনব

1
@ ডুরকনব আপনার উদাহরণ আউটপুটটি দেখে মনে হচ্ছে আপনি ক্লান্ত হয়ে পড়েছেন , দেখে মনে হচ্ছে আপনি টাইপিংয়ের ক্ষেত্রে নতুন এবং আপনি কীভাবে টাইপগুলি সংশোধন করবেন জানেন না। (তোমাদের ওপর কেমন ছিল না তুমি কি টাইপ করা চাই সব। )
Blacklight শাইনিং

1
"এজ-কেস" <- আপনি সেখানে কী করেছেন তা আমি দেখতে পাচ্ছি। * ধীর তালি *
অ্যাডাম মারাস

উত্তর:


15

গল্ফস্ক্রিপ্ট, 120 টি অক্ষর

{10{rand}:R~!{[{.}{;}{Z\?[.(.10-@).10+]{Z=}%' '-.,R=}]'QWERTYUIOP ASDFGHJKL  ZXCVBNM'' '22*11/*.{32|}%+:Z 2$?0>2+R=~}*}%

কোডটি এখানে পরীক্ষা করা যায়

{                      # loop over all characters
  10{rand}:R~!         # take random number [0..9] and negate (i.e. 10% chance of true)
  {                    # {...}* is the if-block
    [                  # Three possible operations (code blocks) in the arry
      {.}              # a) duplicate
      {;}              # b) delete
      {                # c) shift
        Z              #      Z is the keyboard layout (see below)
        \?             #      Find the index of the current letter
        [.(.10-@).10+] #      Calculate index of letter left, right, above, below
        {Z=}%          #      Extract the corresponding letters for indices
        ' '-           #      Remove any spaces
        .,R=           #      Take random item
      }
    ]
                       # Z is the keyboard layout (upper and lower case)
                       # with enough spaces around
    'QWERTYUIOP ASDFGHJKL  ZXCVBNM'' '22*11/*.{32|}%+:Z
    2$?0>              # Is the current letter contained in Z and not a space?
    2+                 # Add 2 (i.e. 3 for letters, 2 for any other char)
    R=                 # Take a random code block from above
    ~                  # Execute the block
  }*
}%

19

সি, 358 বাইট

(কোডের মাত্র তিনটি লাইন রয়েছে, তবে আমি সুস্পষ্টতার জন্য 3 লাইনটি ভেঙে ফেলেছি)

#define x putchar
#define y random()
c,n;main(){char*s[26]={"QS","HNV","FVX","EFSX","DRW","CDGR","FHTV","BGJY","KOU","HKNU",
"IJLM","KO","KN","BJM","ILP","OO","AW","EFT","ADWZ","GRY","IJY","BCG","ESQ","CDZ","HTU",
"SX"};while((c=getchar())>0){if(y%10>0&&x(c))continue;if(isalpha(c)&&y%3<1){n=(c&31)-1;
x(s[n][y%strlen(s[n])]|(c&32));continue;}if (y&1)x(x(c));}}

শুরুতে স্ট্রিংগুলির অ্যারে বর্ণমালার প্রতিটি বর্ণের জন্য সম্ভাব্য সংলগ্ন কীগুলি তালিকাভুক্ত করে। random()%1স্থানান্তরিত অক্ষর নির্বাচন করার সময় গণনা এড়াতে আমাকে "ও" ("পি" সংলগ্ন) দ্বিগুণ করতে হয়েছিল ।

পরীক্ষা রান:

$ echo "This is some correct text. It is too correct. Please un-correctify it." |./a.out
This is some  cofrect teext. It is too correct.. Plleaase un-correctify it..

হালনাগাদ:

এখানে একই উত্স কোডের একটি বর্ধিত ও মন্তব্য করা সংস্করণ রয়েছে:

#include <stdio.h>
#include <string.h>
/* ^^ These should be included, but the code compiles without them */

int c,n;

void main() {

  /* Adjacent keys for each letter of the alphabet (A, B, C, ..., Z): */
  char *s[26] = { "QS","HNV","FVX","EFSX","DRW","CDGR","FHTV","BGJY","KOU","HKNU",
                  "IJLM","KO","KN","BJM","ILP","OO","AW","EFT","ADWZ","GRY","IJY",
                  "BCG","ESQ","CDZ","HTU","SX" };

  /* Fetch input until null character or EOF reached */
  while ((c=getchar())>0) {

    /* For 90% of the time, just echo the character unchanged */
    if (random()%10>0 && putchar(c)) continue;

    /* If it's a letter of the alphabet, shift with 33% probability */
    if (isalpha(c) && random()%3<1) {
      /* Calculate offset to adjacent keys data */
      n=(c&31)-1;
      /* Choose a random adjacent key, and change to lower case if needed */
      putchar(s[n][random()%strlen(s[n])]|(c&32));
      continue;
    }

    /* If we reach this point, either we didn't fetch an alphabet character, or   */
    /* we did but chose not to shift it. Either way, we now need to either repeat */
    /* the character or delete it, with 50% probability for each. */

    /* This repeats the character by printing the return value from putchar() */
    if (random()&1) putchar(putchar(c));

    /* To delete the character, we don't have to do anything. */
  }
}

2
আমি মোটামুটি নিশ্চিত আপনাকে 26 টি লাগানোর দরকার নেই char*s[26]। সংকলকটি নিজে এটি নির্ধারণ করতে সক্ষম হওয়া উচিত।
এফডিনফ

@ এফডিনফ আহ, অবশ্যই। এখন বেশি পয়েন্ট এডিটিং নয়; জাহাজটি ইতিমধ্যে ডুবে গেছে :
চটজলদি ossifrage

আপনি উভয় continueগুলি এর সাথে প্রতিস্থাপন করতে পারেন else। ( ;প্রথমটি যেখানে ছিলেন সেখানে ছেড়ে দিন )।
এশেলি

1
এলোমেলো ()% 1 নিয়ে সমস্যা কী? যে কোনও ইনট% 1 হওয়া উচিত 0
ব্যবহারকারী 253751

18

রুবি, 168

অ্যারে ইনডেক্সিং কৌশলটি ব্যবহার করে সামান্য খাটো করুন:

z='qwertyuiop.asdfghjkl...zxcvbnm'+?.*11
gets.chars{|c|$_=z[c]?z:z.upcase
h=[1,-1,11,-11].map{|d|$_[d+~/#{c}/]}-[?.]rescue[]
$><<(rand<0.9?c:[c*2,'',*h.sample].sample)}

আসল নিয়মিত অভিব্যক্তি সংস্করণ (184):

s='.qwertyuiop.asdfghjkl...zxcvbnm.'
gets.chars{|c|c=~/\w/&&(s[c]?s: s.upcase)=~/((\w).{9})?((\w)|.)#{c}((\w)|.)(.{9}(\w))?/
$><<(rand<0.9?c:[c*2,'',*[*$2,*$4,*$6,*$8].sample].sample)}

3
দুঃখিত, আমি রুবি পড়তে পারি না। এখানে আমি STDIN '0123456789'x10 অর্থাত্ 100 টি সংখ্যা (অর্থাত্ 10 টিতে 1000 সংখ্যা) 10 বার এই প্রোগ্রামটি চালিয়েছি, এবং আউটপুটটিতে কখনই সদৃশ অঙ্ক ছিল না । সেই সাইটটিতে সমস্যা আছে, বা এটি কীভাবে কাজ করে তা সম্পর্কে আমার বোঝাপড়া?
ব্যবহারকারী 2846289

@ ভাদিমআর ভাল ক্যাচ, ধন্যবাদ! আমি Kernel#putcআউটপুট মুদ্রণ করতে ব্যবহার শুরু করেছি যেহেতু এর জন্য পেরেনগুলির দরকার নেই, আমাকে একটি চরিত্র সংরক্ষণ করে। অবশ্যই putcকেবল প্রথম অক্ষরটি মুদ্রণ করে এবং আউটপুট স্ট্রিং মাঝে মাঝে দুটি অক্ষর দীর্ঘ হতে পারে। বোকার মত ভুল. এই সংস্করণ চেষ্টা করুন!
পল প্রেস্টিজ

এখন নিখুঁত। ধন্যবাদ.
ব্যবহারকারী 2846289

9

পাইথন, 251

from random import*
w=choice
o=ord
print"".join(w([z]*9+[w(["",z*2]+[chr(o(w("DGRC FHTV GJYB UOK HKUN JLIM KO NK BMJ IPL O WA ETF ADWZ RYG YIJ CBG QES ZCD TUH XS SQ VNH XVF SFEX WRD".split()[(o(z)&31)-6]))|o(z)&32)]*z.isalpha())])for z in raw_input())

খুব সরল চেহারা আপ প্রযুক্তি, এক মুহুর্তের জন্য আমি ভেবেছিলাম একটি অনির্দেশিত গ্রাফ হিসাবে কীবোর্ডটি এনকোড করা ভাল তবে তবে পাইথনের মধ্যে এ জাতীয় ধরণের তৈরি করার জন্য ওভারহেড নিষিদ্ধ proved পাইথনের এলোমেলো ক্রিয়াকলাপগুলির বর্ণনামূলক নামগুলি আমি choice()একচেটিয়াভাবে ব্যবহার করি , এটির নামকরণ করে w। ভুলের 10% সম্ভাবনাটি পরিচালনা করা হয় w([z]*9+[...])যেখানে একটি টাইপযুক্ত অক্ষরটির নয়টি অনুলিপি একটি টাইপযুক্ত তালিকায় রয়েছে।

-১ characters অক্ষর - ধন্যবাদ জিআরসি, +২ টি অক্ষর (এবং যথার্থতা, 2 টিরও বেশি অক্ষরের মূল্য) - ধন্যবাদ ধরার


2
কিছু ছোটখাটো উন্নতি: ডিলিমিটার হিসাবে স্পেস ব্যবহার করুন d="SQ VNH XVF...".split(), পরে স্থানটি সরিয়ে ফেলুন printএবং if/ এর elseসাথে প্রতিস্থাপন করুন ([...]+[...])*z.isalpha()। এছাড়াও, আপনার কেবল একটি ভেরিয়েবলের দরকার নেই dযেহেতু আপনি কেবল এটি একবার ব্যবহার করেন।
grc

1
আপনি w=__import__('random').choice(কমপক্ষে পাইথন 3 আফিকেতে) করতে পারেন।
সাইমনটি

1
এই কোডটি বেশ কয়েকটি পাঠ্য-অক্ষরগুলির সাথে ভেঙে গেছে:?;: <ইত্যাদি
ধারা

1
এছাড়াও, এটি সূচীকরণের ক্ষেত্রে একের পর এক ত্রুটি রয়েছে: 'বিবিবিবিবিবিবি'তে' বি 'কে' এক্স 'দ্বারা প্রতিস্থাপন করা হয়েছে,' zzzzzzzzzz 'সীমা ছাড়িয়ে একটি সূচক দেয়
ধারা

1
পাইথন 3 এর ব্যবহার করুন input()এবং print()2 টি অক্ষর সংরক্ষণ করুন।
সিস টিমারম্যান

8

সি #, 320 বাইট (প্রোগ্রাম মোড়ক সহ 360 বাইট)

"স্থানান্তরিত" বড় হাতের অক্ষরের জন্য সমর্থন অন্তর্ভুক্ত।

একটি ফাংশন হিসাবে (320 বাইট):

string T(string s){
    string t="",z="      ",k=z+z+"qwertyuiop asdfghjkl   zxcvbnm";
    k+=k.ToUpper()+z+z;
    int[]m={-11,-1,1,11};
    var r=new System.Random();
    foreach(var c in s){
        if(r.Next(10)>0)
            t+=c;
        else{
            int i=r.Next(k.IndexOf(c)>0?3:2);
            if(i>1){
                while(' '==k[i=k.IndexOf(c)+m[r.Next(4)]]);
                t+=k[i];
            }
            else if(i>0)
                t=(t+c)+c;
        }
    }
    return t;
}

এমন একটি প্রোগ্রাম হিসাবে যা পাঠ্যের একটি লাইন (৩ by০ বাইট) পড়ে:

using System;
class P{
    static void Main(){
        string t="",z="      ",k=z+z+"qwertyuiop asdfghjkl   zxcvbnm";
        k+=k.ToUpper()+z+z;
        int[]m={-11,-1,1,11};
        var r=new Random();
        foreach(var c in Console.ReadLine()){
            if(r.Next(10)>0)
                t+=c;
            else{
                int i=r.Next(k.IndexOf(c)>0?3:2);
                if(i>1){
                    while(' '==k[i=k.IndexOf(c)+m[r.Next(4)]]);
                    t+=k[i];
                }
                else if(i>0)
                    t=(t+c)+c;
            }
        }
        Console.Write(t);
    }
}

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

This is some correct text. It is too correct. Please un-correctify it.
This  is some corrrect texy. Ut is too correct. Pease un-coorrectify it.

TYPO RAGE CAPS TEXT!
TYPPORAGE CAOS TEX!

আইনী সি # প্রোগ্রামগুলির বৈধ হওয়ার জন্য কমপক্ষে "পাবলিক ক্লাস এ {স্ট্যাটিক শূন্যস্থান মেইন () {}}" থাকা দরকার। এরপরে আপনাকে কনসোল থেকে পড়তে হবে। তবে দেখে মনে হচ্ছে আপনার সমাধানটি আমার থেকে এখনও খাটো হবে, তাই খুব ভাল।
Xantix

@ এক্সটিক্স, আমি জানি, তবে তারা কখনও বলেনি যে এটি একটি প্রোগ্রাম হতে হবে। যেভাবেই হোক না কেন, আমার উত্তরটিতে এখন প্রোগ্রামের মোড়ক অন্তর্ভুক্ত।
হ্যান্ড-ই-ফুড

আমি কেবল বুঝতে পেরেছি, আমার ফাংশন সিআর এবং এলএফ অক্ষরগুলিকে ইনপুটটিতে গ্রহণ করবে যা সম্ভাব্যভাবে দ্বিগুণ বা বাদ দেওয়া যেতে পারে। এটি আকর্ষণীয় আউটপুট তৈরি করবে ...
হ্যান্ড-ই-ফুড

2
হুম, Func<int,int> n=x=>r.Next(x);একটি ভাল ধারণা দেওয়ার জন্য পর্যাপ্ত এলোমেলো কল নেই । যদি কেবল সংকলক প্রতিনিধিদের জন্য টাইপটি অনুমান করতে পারে ...
ম্যাগাস

8

জেএস, 303 , 288 , 275 , 273 , 274 (বাগ ফিক্স)

function z(s){return s.split('').map(function(d){if((r=Math.random)(b='qwertyuiop0asdfghjkl000zxcvbnm')>.1)return d
if((c=r(x=(d>'`'?b:(b=b.toUpperCase())).indexOf(d))*(/[a-z]/i.test(d)+2))<2)return c>1?d+d:''
for(a=0;!a;)a=b[x+[11,-11,1,-1][~~(r()*4)]]
return a}).join('')}

কীস্লিপের জন্য অ্যালগরিদম:

  • স্ট্রিংয়ে চরটি সন্ধান করুন (বা বড় হাতের অক্ষর)
  • সূচীতে 11, -11, 1 বা -1 যুক্ত করুন।
  • যদি এটি অবৈধ (0 বা নাল) হয় তবে পুনরায় রোল করুন

অনুরোধ অনুসারে নন-গল্ফ সংস্করণ:

function z (s) {
  return s.split('') // split input string into characters.
          .map( // and then for each character...
    function (d) {
      r = Math.random; // set up a shortened form of Math.random
      // declare keyboard here because we have parens and we can save a delimeter.
      b = 'qwertyuiop0asdfghjkl000zxcvbnm';  
      if (r() > .1) {  // normal case
        return d;
      }
      numOptions = /[a-z]/i.test(d) + 2; // if it's a character, 1+2, else 0+2 options

      // test here because we have parens. x might be -1
      if (d > '`') { 
        x = b.search(d);  // x marks the spot
      } else {
        b = b.toUpperCase();
        x = b.search(d);
      }

      c = r() * numOptions; // chars can be 0-3, non-chars: 0-2
      if (c < 2) {                // this case is simple, so it comes first
        return c>1 ? d + d : ''; // double or omit.
      }

      // we must be in keyslip mode.

      // in the golfed code, this while loop become for loops, 
      // but it's really a while.
      a = 0;
      while (!a) { // that is, a != null && a != 0
        v = ~~(r() * 4); // 0, 1, 2, or 3
        newX = x + [11, -11, 1, -1][v]; // choose one
        a = b[newX];  // slip the key
      }
      return a;
    }
  ) // end the map function
  .join('') // and then reassemble the string
}

বলিহারি! জেএস নিনজা পুরস্কৃত!
সানি আর গুপ্ত

1
@ সানিআরগুপ্ত ধন্যবাদ! আশা করি আমি এটিকে আরও নামিয়ে আনতে পারতাম। আমি মনে করি বৃহত্তর প্রথম বন্ধনী জাহান্নাম এটি প্রয়োজনের চেয়ে দীর্ঘ করতে পারে।
চার্লস

এছাড়াও novices জন্য অ-মিনিড সংস্করণ প্রদর্শিত চেষ্টা করুন!
সানি আর গুপ্ত

ঠিক আছে, প্রযুক্তিগতভাবে আপনার কোডটিতে উইন্ডোজগুলিতে 277 বাইট রয়েছে। আপনি সমস্ত নিউলাইনগুলি এর সাথে প্রতিস্থাপন করবেন ;। এটিই বলার একমাত্র উপায় এটিতে 274 বাইট রয়েছে। এছাড়াও এটি কেবল নতুন জাভাস্ক্রিপ্ট এবং জেএসক্রিপ্ট সংস্করণে কাজ করে।
ইসমাইল মিগুয়েল

6

পার্ল, 278 239 197 169 162 156 151 149

s#((\pL)|.)#rand>.1?$&:($&x2,'',do{1until/^.{@{[(2,-10,12)[rand 4]-1+index$_=QWERTYUIOP0ASDFGHJKL000ZXCVBNM,uc($,=$&)]}}(\D)/;$,&' '|$1})[rand@-]#ge

-pতারপরে চালান , তারপরে 148 + 1 = 149 বাইট। উদাহরণ:

perl -p typos.pl
Your challenge is to take an arbitrary single line of text, and add typos.
You challenge is to tale an  arbitrary singe lind of text, and add yposs.
This is some correct text. It is too correct. Please un-correctify it.
This iis some correct text. It s too coorrect.Pleqse un-correctify it.

অ-গল্ফড, কমবেশি:

s#((\pL)|.)#rand>.1
    ? $&
    : ($&x2,'',
        do{
            1until/^.{@{[(2,-10,12)[rand 4]-1
                +index$_=QWERTYUIOP0ASDFGHJKL000ZXCVBNM,uc($,=$&)]}}(\D)/;
            $,&' '|$1
        }
    )[rand@-]
#ge

প্রথমে আমি ভেবেছিলাম যে অ্যারেতে এলোমেলোভাবে উপাদান নির্বাচন করা (তাদের মধ্যে বিভিন্ন দৈর্ঘ্যের 26 টি) আরও পরিসংখ্যানগতভাবে 'পরিষ্কার' (অর্থাত্ এলোমেলো), তবে সম্ভবত এটি ভুল ছিল। (পূর্ববর্তী সংস্করণটি দেখুন)) নেতাদের অনুসরণ করে এই শেষ চেষ্টাটি হ'ল :-), -1,1, -11,11 (এলোমেলোভাবে) দ্বারা স্ট্রিং বরাবর পদক্ষেপ এবং বৈধ পদক্ষেপ পর্যন্ত পুনরাবৃত্তি করা।

সম্পাদনা: টোবাইঙ্ক সহায়তা এবং অন্যান্য অপ্টিমাইজেশনের জন্য, আমরা কোডের আকারকে যথেষ্ট পরিমাণে হ্রাস করতে সক্ষম হয়েছি।

ম্যানুয়াল চেকগুলি অপসারণ করে প্রতিস্থাপনের স্ট্রিংয়ের সাথে বৈধ পদক্ষেপটি খুঁজে পেতে শেষ পদ্ধতিটি regexp অনুসন্ধানের সাথে কিছু কৌশল ব্যবহার করে।

অন্য সম্পাদনা: 5 বাইট বন্ধ কারণ অ্যারে সূচকগুলির জন্য আমাদের পূর্ণসংখ্যার প্রয়োজন নেই + অবৈধ অ্যারে সূচক সহ ছোট ট্রিক। আমি একই কৌশল চেষ্টা করেছি [-4+rand@-](অর্থাত্ নেতিবাচক সূচকগুলি) এবং একটি তালিকার উপাদান থেকে মুক্তি পেয়েছি , '',তবে এটি কিছুই সংরক্ষণ করেনি।

সম্পাদনা করুন: সরলতায় ফিরে যান - 2 বাইট সংরক্ষণের ~~rand 10সাথে শর্তটি প্রতিস্থাপন করা হচ্ছে rand>.1...


1
সংজ্ঞা দেওয়ার পরে সেমিকোলনের দরকার নেই sub i। আপনি কঠোর ব্যবহার করছেন না, তাই 'QWERTYUIOP0ASDFGHJKL000ZXCVBNM'খালি শব্দ হিসাবে দেওয়া যেতে পারে (দুটি উদ্ধৃতি চিহ্নের অক্ষর সংরক্ষণ করে)। একইভাবে, তাইও 'Z'(যদিও এর অর্থ আপনার এর মধ্যে একটি স্পেস যুক্ত করা দরকার এবং gtএটি কেবল একটি অক্ষর সংরক্ষণ করে)। মোট সঞ্চয়: 4 টি অক্ষর।
tobyink

1
কনস্ট্রাক্ট ($n=i$&=~/\pL/?3:2)?--$n?do{...}:$&x2:''হিসাবে নতুন করে লেখা যেতে পারে ($&x2,'',do{...})[i$&=~/\pL/?3:2]। এর অর্থ হল যে মূল্যায়নটি অলস নয় (এটি প্রতিস্থাপনের কৌশলটি সিদ্ধান্ত নেওয়ার আগে চরিত্রটি প্রতিস্থাপন করা যেতে পারে এমন তিনটি উপায়ে গণনা করে) তবে এটি কার্যকর হয় এবং এটি আমার গণনা অনুসারে আরও সাতটি অক্ষর সংরক্ষণ করে।
টোবাইঙ্ক

1
ওহ, আমি কেবল লক্ষ্য করেছি gt'Z'যে আপনার খুব আগে সাদা অংশ রয়েছে - এটি বাদ দেওয়া যেতে পারে। এই সমস্ত পরিবর্তনগুলির সাথে, আপনি এটি 184 টি অক্ষরে নামিয়ে আনতে সক্ষম হওয়া উচিত।
tobyink

@ টোবাইঙ্ক, বিশেষত আপনার দ্বিতীয় মন্তব্যের জন্য অনেক ধন্যবাদ - আমি সেখানে এই নির্মাণটি কীভাবে দেখলাম না, তা আমি জানি না :-( সাব চলে গেছে (আমাদের কয়েকটা বাইট বাঁচায়)। বয়ারওয়ার্ডস ট্রিকটিও দুর্দান্ত, এবং আমি আপনার মন্তব্যটি পড়ার সময় আমি ইতিমধ্যে এটি করছি: :-) আবারও ধন্যবাদ।
ব্যবহারকারী 2846289

1
তোমার জন্য আমি আরও একটি চরিত্র পেয়েছি যদি আপনি এই নাম পরিবর্তন $sকরেন $,(এই বিল্ট-ইন ভেরিয়েবলটি ক্ষেত্রের বিভাজক print, তবে আপনি কোথাও একাধিক ক্ষেত্র মুদ্রণ করছেন না, তাই এটি অভ্যন্তরীণ ব্যবহার অপ্রাসঙ্গিক, পুনরায় ব্যবহারের জন্য পরিবর্তনশীল পাকা করে তোলে) তবে আপনি সাদা স্থানটি মুছে ফেলতে পারবেন মধ্যে $s x3এটি শুধু উপার্জন $,x3
tobyink

4

পিএইচপি, 368 বাইট সহ ফাংশন

আমার চেষ্টা এখানে।

এটা কিছু "frankencode", কিন্তু এটা ধরণ কাজ করে।

function _($m){$q=array(array('qwertyuiop','asdfghjkl',' zxcvbnm'),'!.-,;?+/');$r='mt_rand';foreach(str_split($m)as$k=>$c)if(!$r(0,9)&&$c!=' ')foreach($q[0]as$x=>$y)if(($z=strpos($y,$c))!==!1){switch($t=$r(-3,2-($z>>3)-($x>>1))){case 2:++$z;break;case 1:++$x;break;case -1:--$x;break;case -2:--$z;break;case -3:$z=8;break;}$m[$k]=$t?$q[0][$x][$z]:$q[1][$z];}return$m;}

আরও একটি "পঠনযোগ্য" কোড:

function _($m)
{
    $q=array(array('qwertyuiop','asdfghjkl',' zxcvbnm'),'!.-,;?+/');
    $r='mt_rand';
    foreach(str_split($m)as$k=>$c)
        if(!$r(0,9)&&$c!=' ')
            foreach($q[0]as$x=>$y)
                if(($z=strpos($y,$c))!==!1)
                {
                    switch($t=$r(-3,2-($z>>3)-($x>>1)))
                    {
                        case 2:
                            ++$z;break;
                        case 1:
                            ++$x;break;
                        case -1:
                            --$x;break;
                        case -2:
                            --$z;break;
                        case -3:
                            $z=8;break;
                    }
                    $m[$k]=$t?$q[0][$x][$z]:$q[1][$z];
                }
    return$m;
}

2 টি কোডের মধ্যে একমাত্র পার্থক্য হ'ল একের মধ্যে অনেকগুলি ট্যাব এবং নিউলাইন রয়েছে।

এটি একই ধরণের "ভুলতা" তৈরি করে না, তবে এটি উল্লিখিত শর্তাদি ব্যবহার করে একটি চরটিকে মুছে ফেলে বা প্রতিস্থাপন করে।

আপনি এটি http://writecodeonline.com/php/ এ চেষ্টা করতে পারেন ।

এই কোডটি অনুলিপি করুন এবং আটকান:

function _($m){$q=array(array('qwertyuiop','asdfghjkl',' zxcvbnm'),'!.-,;?+/');$r='mt_rand';foreach(str_split($m)as$k=>$c)if(!$r(0,9)&&$c!=' ')foreach($q[0]as$x=>$y)if(($z=strpos($y,$c))!==!1){switch($t=$r(-3,2-($z>>3)-($x>>1))){case 2:++$z;break;case 1:++$x;break;case -1:--$x;break;case -2:--$z;break;case -3:$z=8;break;}$m[$k]=$t?$q[0][$x][$z]:$q[1][$z];}return$m;}
echo _('This is some correct text. It is too correct. Please un-correctify it.');

পরীক্ষার পরে, দয়া করে আমাকে বলুন এটি একটি বৈধ উত্তর কিনা।


এটি মোটেও বড় বড় অক্ষরগুলিকে প্রভাবিত করে বলে মনে হচ্ছে না।
চটজলদি ossifrage

1
বড় হাতের অক্ষর উদাহরণে প্রভাবিত হয় না। তবে হ্যাঁ, তা হয় না। তবে আরও খেয়াল করুন যে আমি বলেছিলাম যে এটি কাজ করে A
ইসমাইল মিগুয়েল

3

সি #, 581 বাইট

using System;class B{static void Main(){var z=Console.ReadLine();var r=new Random();foreach(char C in z){String o;if(r.Next(10)==0){int w=r.Next(3);o=w==0?C+""+C:w==1?"":f(C,r);}else{o=C+"";}Console.Write(o);}Console.ReadLine();}static string f(char C,Random r){string[]k={"00000000000","0qwertyuiop0","0asdfghjkl0","00zxcvbnm0","000000000"};char L=char.ToLower(C);char h='0';for(int i=1;i<4;i++){var d=k[i].IndexOf(L);if(d!=-1){while(h=='0'){int n=r.Next(4);h=n==0?k[i][d-1]:n==1?k[i][d+1]:n==2?k[i-1][d]:k[i+1][d];}h=char.IsUpper(C)?char.ToUpper(h):h;return h+"";}}return C+"";}}

এবং আরও পাঠযোগ্য বিন্যাসে:

using System;

class A
{
    static void Main()
    {
        var z = Console.ReadLine();
        var r = new Random();

        foreach (char C in z)
        {
            String o;

            if (r.Next(10) == 0)
            {
                int w = r.Next(3);
                o = w == 0 ? C + "" + C :
                    w == 1 ? "" :
                             f(C, r);
            }
            else
            {
                o = C + "";
            }

            Console.Write(o);
        }
    }

    static string f(char C, Random r)
    {
        string[] k = {
                            "00000000000", 
                            "0qwertyuiop0", 
                            "0asdfghjkl0", 
                            "00zxcvbnm0", 
                            "000000000"};  
        char L = char.ToLower(C);
        char h = '0';

        for (int i = 1; i < 4; i++)
        {
            var d = k[i].IndexOf(L);

            if (d != -1)
            {
                while (h == '0')
                {
                    int n = r.Next(4);

                    h = n == 0 ? k[i][d - 1] :
                        n == 1 ? k[i][d + 1] :
                        n == 2 ? k[i - 1][d] :
                                 k[i + 1][d];
                }
                h = char.IsUpper(C) ? char.ToUpper(h) : h;
                return h + "";
            }
        }
        return C + "";
    }
}

3

পিএইচপি, 326 320 318 315 অক্ষর

$h=array(qs,vhn,vxf,sefx,wrd,drgc,fthv,gyjb,uko,hukn,jilm,ok,nk,bjm,ilp,o,aw,etf,awdz,rgy,yji,cgb,qse,zdc,thu,sx);$a=x.$argv[1];for(;$d=$a[++$b];)echo!rand(0,9)&&($c=ord($d)-65)?(!($g=rand(0,($e=($c>-1&&$c<26)or$c>31&&$c<58)+1))?$d.$d:($g<2?"":(($j=$i[rand(0,strlen($i=$h[$c-!$e*32]))])&&$e?strtoupper($j):$j))):$d;

এবং আরও পাঠযোগ্য এবং মন্তব্য করা সংস্করণ:

// $a   input
// $b   char iterator
// $c   current char ascii value
// $d   current char
// $e   is uppercase
// $g   rand() output
// $h   char displacement
// $i   current character in $h
// $j   temporary var for uppercasing

// the neighbouring characters of a-z, in alphabetical (and ASCII) order
$h=array(qs,vhn,vxf,sefx,wrd,
    drgc,fthv,gyjb,uko,hukn,
    jilm,ok,nk,bjm,ilp,
    o,aw,etf,awdz,rgy,
    yji,cgb,qse,zdc,thu,
    sx);
// input from argument
$a=x.$argv[1];

for(;$d=$a[++$b];)
    echo!rand(0,9)&&($c=ord($d)-65)? /* 10% chance, read char ASCII value - 65 into $c */
        (!($g=rand(0,($e=($c>-1&&$c<26)or$c>31&&$c<58)+1))?
          /* random number from 0 to 2 (if alphabetic) or 0 to 1 stored in $g */
            $d.$d: /* double char if $g = 0 */
            ($g<2?
                "": /* omit char if $g = 1*/
                (($j=$i[rand(0,strlen($i=$h[$c-!$e*32]))])&&$e?
                  /* $j = random neighbour of the current char */
                    strtoupper($j): /* uppercase $j */
                    $j)))
        :$d; /* keep char */

তবুও উন্নতি হতে পারে, আমি মনে করি।

-2, -3 ইসমাইল মিগুয়েলকে ধন্যবাদ


1
যেখানে আপনার জন্য (!($g=rand(0,($e=($c>-1&&$c<26)or$c>31&&$c<58)?2:1))পরিবর্তন হয়েছে (!($g=rand(0,($e=($c>-1&&$c<26)or$c>31&&$c<58)+1))?এবং আপনি 2 বাইট সংরক্ষণ করবেন।
ইসমাইল মিগুয়েল

1
আপনার যেখানে রয়েছে ($e?0:32), প্রতিস্থাপন 32*!!$e(প্রথম বন্ধনী অভাব লক্ষ্য করুন) 2 বাইট সংরক্ষণ করুন। যদি $eসর্বদা বুলিয়ান হয় তবে আপনি করতে পারেন 32*!$eএবং আপনি 3 বাইট সংরক্ষণ করতে পারেন । এটি পিএইচপি এর গাণিতিক অগ্রাধিকারের কারণে কাজ করবে। এর অর্থ হ'ল যে কোনও যোগ এবং বিয়োগের আগে গুণ এবং বিভাগগুলি তৈরি করা হয়।
ইসমাইল মিগুয়েল

2

জাভা (475 বাইট)

এটি জাভাটি ভাষাতে আমার চেষ্টা। জাভাতে এলোমেলো সংখ্যা পাওয়া বেশ দীর্ঘ এবং ম্যাপিংটি আসলেই কার্যকর নয়। এটি সম্ভবত উন্নত করা যেতে পারে।

import static java.lang.Math.*;public class T{public static void main(String[]a){String z="",v;for(char c:a[0].toCharArray()){double g=random()*60;if(g>=6)z+=c;else{boolean u='A'<=c&c<='Z',l='a'<=c&c<='z';if(g<(l|u?2:3))z+=""+c+c;else if((l|u)&g<4){v="qs,hnv,fvx,efsx,drw,cdgr,fhtv,kou,bgjy,hknu,ijlm,ko,kn,bjm,ilp,o,aw,eft,adwz,gry,ijy,bcg,eqs,cdz,htu,sx".split(",")[u?c-'A':c-'a'];c=v.charAt((int)(random()*v.length()));z+=u?(char)(c-'a'+'A'):c;}}}System.out.println(z);}}

ব্যবহার:

java T "This is some correct text. It is too correct. Please un-correctify it."

সঙ্কুচিত, প্রশংসাসমূহ যুক্ত:

import static java.lang.Math.*; // Need random()

public class T {
    public static void main(String[] a) {
        String z = "", v;
        for (char c : a[0].toCharArray()) {
            double g = random() * 60; // Compute random only once for two cases.
            if (g >= 6) {
                // 90% must be correct (accolades are stripped)
                // so we just copy the character.
                z += c;
            } else {
                // These tests come often.
                boolean u = 'A' <= c & c <= 'Z', l = 'a' <= c & c <= 'z';

                // reuse the random. g is [0,6[.
                if (g < (l | u ? 2 : 3)) { 
                    // If c is an ascii letter (l|u) then g must be [0,2[ ; if not, then g must be [0,3[.
                    // If those conditions are met, we duplicate the character
                    z += "" + c + c;
                } else if ((l | u) & g < 4) {
                    // if c is letter and g [2,4[ then we perform the wrong key event.
                    // I could not compress it using the keyboard mapping shorter in Java than expanding it like it is now.
                    v = "qs,hnv,fvx,efsx,drw,cdgr,fhtv,kou,bgjy,hknu,ijlm,ko,kn,bjm,ilp,o,aw,eft,adwz,gry,ijy,bcg,eqs,cdz,htu,sx".split(",")[u ? c - 'A' : c - 'a'];
                    // get a random character from the string.
                    c = v.charAt((int) (random() * v.length()));

                    // Keep the case of the character.
                    z += u ? (char) (c - 'a' + 'A') : c;
                } else { // if c is not an ascii letter or if g is [4,6[
                    // Do nothing. This else is stripped.
                }
            }
        }
        System.out.println(z);
    }
}

2

অটোহটকি 441 বাইট

ইনপুট অবশ্যই কমান্ড লাইন প্যারামিটার হিসাবে দেওয়া উচিত, আউটপুট একটি ত্রুটি বার্তা হিসাবে দেওয়া হবে।

গল্ফ সংস্করণ

লুপ, পার্স, 1
{
K: = {1: "Q", 2: "W", 3: "ই", 4: "r" বা, 5: "টি", 6: "Y", 7: 'ইউ', 8: "আমি ", 9:" o "10:" পি ", 21:" A ", 22:" s "এর, 23:" ঘ ", 24:" চ ", 25:" G ", 26:" জ ", 27: "J", 28: "ট", 29: "ঠ", 42: "z- র", 43: "X", 44: "C" 45: "বনাম", 46: "খ", 47: "এন", 48: "M"}, A: = A_LoopField, প্রঃ = দ (? z- র 3: 2), Z =
যদি r (10)! = 10
জ। = একটি
অবিরত
}
এক্স এর জন্য, y কে
z- র: = Y = একটি এক্স: z- র
যদি q = 1
জ। = এএ
যদি q = 3
{
লুপ{
টি: = দ (4), W: = Z + (টি = 1 20: T = 2 -20:? T = 3 1: -1)
k কে.হ্যাসকি (ডাব্লু) পর্যন্ত
জ। = ট [W]
}
}
% h ফেলে দিন
দ (ঢ) {
এলোমেলো, পঃ, 1, এন
ফেরত ডাব্লু
}

আন-গল্ফড এবং টীকাগুলি সংস্করণ (পার্থক্যটি এই সংস্করণটিতে আরও সাদা স্থান রয়েছে এবং পরিবর্তনশীল অ্যাসাইনমেন্টগুলি পাঠযোগ্যতার জন্য পৃথক লাইনে রয়েছে))

K: = {1: "Q", 2: "W", 3: "ই", 4: "r" বা, 5: "টি", 6: "Y", 7: 'ইউ', 8: "আমি ", 9:" o "10:" পি ", 21:" A ", 22:" s "এর, 23:" ঘ ", 24:" চ ", 25:" G ", 26:" জ ", 27: "J", 28: "ট", 29: "ঠ", 42: "z- র", 43: "X", 44: "C" 45: "বনাম", 46: "খ", 47: "এন", 48: "মি"}
লুপ, পার্স, 1
{
    উত্তর: = A_LoopField
    ; 1-10 থেকে একটি এলোমেলো নম্বর পান এবং এটি 10 ​​হয় কিনা তা পরীক্ষা করুন
    ; যদি এটি এই পুনরাবৃত্তিটি বাদ দেয় না
    যদি r (10)! = 10
    {
        জ। = একটি
        অবিরত
    }

    ; বর্তমানের অক্ষরটি কে-তে রয়েছে কিনা তা পরীক্ষা করুন
    z- র =
    এক্স এর জন্য, y কে
        z- র: = Y = একটি এক্স: z- র

    কি টাইপ করবেন তা স্থির করতে একটি এলোমেলো সংখ্যা চয়ন করুন
    প্রশ্ন: = আর (z- র 3: 2)
    যদি q = 1
        h। = aa; কীটি সদৃশ করুন
    যদি q = 3
    {
        ; কীবোর্ড অ্যারে সেট আপ করা হয় যাতে যোগ বা বিয়োগ দ্বারা
        ; 20 সূচি থেকে আপনি একটি সারিতে উপরে বা নীচে চলেছেন
        ; এবং 1 যোগ বা বিয়োগ করে আপনি ডান বা বাম দিকে সরান
        ; তারপরে আপনাকে ঠিক করতে হবে অ্যাডজাস্টড ইনডেক্স কিনা
        ; বৈধ
        লুপ
        {
            টি: = দ (4)
            W: = Z + (টি = 1 20: T = 2 -20: T = 3 1:? -1)
        } যতক্ষণ না কে.হ্যাসকি (ডাব্লু)
        জ। = ট [W]
    }
}
; একটি ত্রুটি বার্তা হিসাবে স্ট্রিং প্রদর্শিত
% h ফেলে দিন
দ (ঢ)
{
    এলোমেলো, পঃ, 1, এন
    ফেরত ডাব্লু
}

কোন প্রোগ্রাম দিয়ে এই কাজ করে?
ইসমাইল মিগুয়েল

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