আমার পাসওয়ার্ড মুঙ্গ করুন


17

সাধারণ শব্দগুলি এখনও পাসওয়ার্ড হিসাবে ব্যবহার করা এড়ানো উচিত। এই চ্যালেঞ্জটি একটি খুব সহজ প্রোগ্রাম কোডিং সম্পর্কে যা প্রদত্ত পাসওয়ার্ডকে মুগ্ধ করে ( এম ওলিফাই ইউ নটিল এন ওটি জি ইজেড এসিলি)।

ইনপুট

একটি শব্দ, যা বর্ণমালায় লেখা একটি স্ট্রিং abcdefghijklmnopqrstuvwxyz। অক্ষরগুলি ছোট হাতের বা বড় হাতের না হয়ে যায়।

Munging

  1. একটি একই কোন পুনরাবৃত্তি ক্রম পরিবর্তন চিঠি বার চিঠি পুনরাবৃত্তি ছিল সংখ্যা দ্বারা পূর্বে নিজেই ( LLLLসঙ্গে 4L)
  2. এর aসাথে প্রথমটি পরিবর্তন করুন@
  3. এর bসাথে প্রথমটি পরিবর্তন করুন8
  4. এর cসাথে প্রথমটি পরিবর্তন করুন(
  5. এর dসাথে প্রথমটি পরিবর্তন করুন6
  6. এর eসাথে প্রথমটি পরিবর্তন করুন3
  7. এর fসাথে প্রথমটি পরিবর্তন করুন#
  8. এর gসাথে প্রথমটি পরিবর্তন করুন9
  9. এর hসাথে প্রথমটি পরিবর্তন করুন#
  10. এর iসাথে প্রথমটি পরিবর্তন করুন1
  11. iসঙ্গে দ্বিতীয় পরিবর্তন করুন!
  12. এর kসাথে প্রথমটি পরিবর্তন করুন<
  13. এর lসাথে প্রথমটি পরিবর্তন করুন1
  14. lসঙ্গে দ্বিতীয় পরিবর্তন করুনi
  15. এর oসাথে প্রথমটি পরিবর্তন করুন0
  16. এর qসাথে প্রথমটি পরিবর্তন করুন9
  17. এর sসাথে প্রথমটি পরিবর্তন করুন5
  18. sসঙ্গে দ্বিতীয় পরিবর্তন করুন$
  19. এর tসাথে প্রথমটি পরিবর্তন করুন+
  20. এর vসাথে প্রথমটি পরিবর্তন করুন>
  21. vসঙ্গে দ্বিতীয় পরিবর্তন করুন<
  22. এর wসাথে প্রথমটি পরিবর্তন করুনuu
  23. wসঙ্গে দ্বিতীয় পরিবর্তন করুন2u
  24. এর xসাথে প্রথমটি পরিবর্তন করুন%
  25. এর yসাথে প্রথমটি পরিবর্তন করুন?

নিয়ম 1 অবশ্যই আরও বেশি বার প্রয়োগ করতে হবে যতক্ষণ না এটি আরও প্রয়োগ করা সম্ভব না হয়। এর পরে বাকি নিয়ম প্রয়োগ করা হয়।

মুগ্ধ শব্দটি আউটপুট

উদাহরণ

  • codegolf -> (0639o1#
  • programming -> pr09r@2m1ng
  • puzzles -> pu2z135
  • passwords -> p@25uu0r6$
  • wwww -> 4uu
  • aaaaaaaaaaa -> 11a
  • lllolllolll -> 3103io3l
  • jjjmjjjj -> 3jm4j

এটি , সুতরাং আপনার প্রোগ্রামটি যতটা সম্ভব সংক্ষিপ্ত করুন!

এই পোস্টের কোনও কিছুই পাসওয়ার্ড আইডিয়া বা পাসওয়ার্ডের অনুশীলনের কোনও অংশ হিসাবে ব্যবহার করা উচিত নয়।


18
এই জাতীয় প্রোগ্রামগুলি সম্ভব হ'ল অর্থ হ'ল আক্রমণকারী তাদের লিখতে এবং পাসওয়ার্ডটি munge করতে পারে (এবং বিভিন্ন munges চেষ্টা করে) ঠিক তত সহজে (এমনকি আরও সহজ কারণ তারা প্রায়শই ভাল হার্ডওয়ারের অ্যাক্সেস পায়)। সুতরাং কেবল সুরক্ষার স্বার্থে আমি বলব: এই পোস্টের কোনও কিছুই পাসওয়ার্ড আইডিয়া বা পাসওয়ার্ডের অনুশীলনের কোনও অংশ হিসাবে ব্যবহার করা উচিত নয়।
এনএইচ।

1
আমি সেই দাবিটি অস্বীকারকারীকে গা bold় করা এবং এটি শীর্ষে সদৃশ করার প্রস্তাব দিই। আপনি কখনই খুব বেশি যত্নবান হতে পারবেন না ...
wizzwizz4

উত্তর:


11

জাভা 8, 237 321 319 280 247 241 240 237 বাইট

s->{for(int a[]=new int[26],i=0,l=s.length,t,x;i<l;i+=t){for(t=0;++t+i<l&&s[i]==s[t+i];);System.out.print((t>1?t+"":"")+(++a[x=s[i]-65]>2?s[i]:"@8(63#9#1J<1MN0P9R5+U>u%?ZABCDEFGH!JKiMNOPQR$TU<2XYZ".charAt(x+26*~-a[x])+(x==22?"u":"")));}}

+84 বাইট কারণ নিয়মের পরিবর্তন .. পেয়েছিলাম ( সম্পাদনা করুন:। অবশেষে আমার প্রাথমিক 237 বাইট ) প্রতিস্থাপন করা হচ্ছে WWWWসঙ্গে 222Wসহজ জাভা, কিন্তু সঙ্গে 4Wনা .. যদি শুধুমাত্র জাভা কিছু Regex ক্যাপচার-গ্রুপ ব্যবহার করার জন্য একটি উপায় ছিল না। এর সাথে দৈর্ঘ্য অর্জন "$1".length(), ম্যাচটিকে নিজের সাথে প্রতিস্থাপন করা, ম্যাচটিকে "$1".replace(...)একটি পূর্ণসংখ্যার সাথে রূপান্তর করা new Integer("$1"), বা রেটিনা (যেমন s.replaceAll("(?=(.)\\1)(\\1)+","$#2$1")) বা জাভাস্ক্রিপ্টের (যেমন) জাতীয় কিছু ব্যবহার করাs.replaceAll("(.)\\1+",m->m.length()+m.charAt(0)) ) এর করা আমার জাভাতে আমি দেখতে চাই 1 নম্বর জিনিস would সুবিধা codegolfing ..>।> আমার মনে হয় 10 ই + TIME আমি ঘ্রিনা করি জাভা ক্যাপচার-গ্রুপ ম্যাচ নিয়ে কিছু করতে পারি না .. ভবিষ্যতে
-78 ধন্যবাদ বাইট @ OlivierGrégoire

আই / ও বড় হাতের অক্ষর।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

s->{                           // Method with String parameter and no return-type
  for(int a[]=new int[26],     //  Array with 26x 0
          i=0,                 //  Index-integer, starting at 0
          l=s.length,          //  Length
          t,x;                 //  Temp integers
      i<l;                     //  Loop (1) over the characters of the input
      i+=t){                   //    After every iteration: Increase `i` by `t`
    for(t=0;++                 //   Reset `t` to 1
        t+i<l                  //   Inner loop (2) from `t+i` to `l` (exclusive)
        &&s[i]==s[t+i];        //   as long as the `i`'th and `t+i`'th characters are equal
    );                         //   End of inner loop (2)
    System.out.print(          //   Print:
     (t>1?t+"":"")             //    If `t` is larger than 1: print `t`
     +(++a[x=s[i]-65]>2?       //    +If the current character occurs for the third time:
       s[i]                    //      Simply print the character
      :                        //     Else:
       "@8(63#9#1J<1MN0P9R5+U>u%?ZABCDEFGH!JKiMNOPQR$TU<2XYZ".charAt(x
                               //      Print the converted character at position `x`
        +26*~-a[x])            //       + 26 if it's the second time occurring
       +(x==22?"u":"")));      //      And also print an additional "u" if it's 'W'
  }                            //  End of loop (1)
}                              // End of method

10

জাভাস্ক্রিপ্ট (ES6), 147 বাইট

s=>[[/(.)\1+/g,m=>m.length+m[0]],..."a@b8c(d6e3f#g9h#i1k<l1o0q9s5t+v>x%y?i!lis$v<".match(/../g),["w","uu"],["w","2u"]].map(r=>s=s.replace(...r))&&s

পরীক্ষার মামলা

ব্যাখ্যা

sচ্যালেঞ্জ দ্বারা নির্দিষ্ট ক্রমে ইনপুট স্ট্রিংয়ের প্রতিস্থাপনের একটি সিরিজ জুড়ে। সিরিজের প্রতিটি আইটেম একটি অ্যারে বা স্ট্রিং, দুটি আইটেম সহ, যা পরে ছড়িয়ে পড়ে ( ...r) এবং এতে পাস করা হয় s.replace()

s=>[
    [/(.)\1+/g, m=>m.length + m[0]],// first replacement: transform repeated letters
                                    // into run-length encoding

                                    // string split into length-2 partitions and
                                    // spread into the main array
    ..."a@b8c(d6e3f#g9h#i1k<l1o0q9s5t+v>x%y?i!lis$v<".match(/../g),
                                    // next replacements: all single-char replacements.
                                    // "second" versions are placed at the end so they
                                    //    replace the second instance of that char

    ["w","uu"],["w","2u"]           // last replacements: the two "w" replacements
]
.map(r=> s = s.replace(...r))       // run all replacements, updating s as we go
&& s                                // and return the final string

খুব ভাল উত্তর
mdahmoune

6

05 এ বি 1 ই , 69 বাইট

-9 বাইটস ধন্যবাদ এমিগিনার কাছে

γvygD≠×yÙ}J.•k®zĀÒĀ+ÎÍ=ëµι
•"@8(63#9#1<1095+>%?!i$<"ø'w„uu„2u‚â«vy`.;

এটি অনলাইন চেষ্টা করুন!


আপনি ব্যবহার করতে পারেন'w„uu„2u‚â
Emigna

আপনি কি ইনপুট হিসাবে wwww এর ফলাফল যাচাই করতে পারবেন?
mdahmoune

@ এমদাহমৌনে এটি আউটপুট দেয়4uu
Okx

এমিগানা কার্টেসিয়ান পণ্য, ভাল ধারণা।
Okx

প্রথম অংশটি হতে পারেγvygD≠×yÙ}J
Emigna

6

পার্ল 5 , 152 + 1 ( -p) = 153 বাইট

s/(.)\1+/(length$&).$1/ge;%k='a@b8c(d6e3f#g9h#i1j!k<l1mio0q9r5s$t+u>v<x%y?'=~/./g;for$i(sort keys%k){$r=$k{$i};$i=~y/jmru/ilsv/;s/$i/$r/}s/w/uu/;s/w/2u/

এটি অনলাইন চেষ্টা করুন!


প্লিজ (-পি) বলতে কী বোঝ?
mdahmoune

1
@mdahmoune -pএকটি যুক্তি হিসেবে ব্যবহার করা হয় perlকমান্ড যা স্বয়ংক্রিয়ভাবে থেকে ইনপুট সার্চ এ STDINএবং printবিষয়বস্তু গুলি $_স্ক্রিপ্ট শেষে। টিআইও সেই বিকল্পটিকে অনুমতি দেয় এবং যেহেতু এটি একটি অতিরিক্ত বাইট হিসাবে গণনা করা হয় তার perl -pe<code>চেয়ে আরও 1 বাইট বেশি perl -e<code>
ডম হেস্টিংস

আমি তোমাকে একটা টাইপো তৈরি করেছি মনে করি, করা উচিত নয় ~মধ্যে j~kএকটি হতে !পরিবর্তে? বর্তমানে দ্বিতীয় সংঘটন প্রতিস্থাপিত iএকটি সঙ্গে ~একটি পরিবর্তে !
কেভিন ক্রুইজসেন 21

@ এক্সকালি # টেস্টিংঅন প্রডাকশন
নিডজেজেকব

2
@ নিডজেজেকোব এর চেয়ে ভাল জায়গা আর নেই। এটিই আপনি জানেন যে এটি উত্পাদনতে কাজ করবে।
এক্সকালি

4

সম্ভবত এটি সবচেয়ে গল্ফড না হলেও এটি কাজ করে।

-6 বাইটস ovs ধন্যবাদ

-77 বাইট ধন্যবাদ নাইডেজেককোব এবং জোনাথন ফরাসিকে

পাইথন 3 , 329 323 বাইট 246 বাইট

import re;n=input()
for a in re.finditer('(\w)\\1+',n):b=a.group();n=n.replace(b,str(len(b))+b[0],1)
for A,B,C in[('abcdefghikloqstvxyw','@8(63#9#1<1095+>%?','uu'),('ilsvw','!i$<','2u')]:
	for a,b in zip(A,list(B)+[C]):n=n.replace(a,b,1)
print(n)

এটি অনলাইন চেষ্টা করুন!


1
আমি মনে করি আপনি ড্রপ করতে পারেন.lower()
mdahmoune

এটি বোধগম্য হয়, আমি নিশ্চিত নই যে আমার বড় হাতের ব্যবস্থা করা দরকার কিনা।
রেফু



2
আসলে, আপনার উত্তর কাজ করে না। jjjmjjjjআউটপুট 3jm4jকিন্তু আউটপুট উচিত 3jm3jj। সম্পাদনা করুন: এই সমস্যাটি সহ 258 বাইট স্থির হয়েছে
NieDzejkob

3

রেটিনা , 166 124 বাইট

(.)\1+
$.&$1
([a-y])(?<!\1.+)
¶$&
¶w
uu
T`l¶`@8(63#9#1j<\1mn0\p9r5+u>\w%?_`¶.
([ilsvw])(?<!\1.+)
¶$&
¶w
2u
T`i\lsv¶`!i$<_`¶.

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা:

(.)\1+
$.&$1

দৈর্ঘ্য এবং অক্ষর দিয়ে পুনরাবৃত্ত অক্ষরের একটি রান প্রতিস্থাপন করুন।

([a-y])(?<!\1.+)
¶$&

চিঠির প্রথম সংঘটন মেলান aকরতে yথাকেন এবং তাদেরকে একটি স্থানধারক সহ চিহ্নিত করুন।

¶w
uu

প্রথম ঘটনাটি ঠিক করুন w

T`l¶`@8(63#9#1j<\1mn0\p9r5+u>\w%?_`¶.

থেকে সব অন্য অক্ষর প্রথম সংঘটন ত্রুটিমুক্ত aকরার yএবং প্লেসহোল্ডার মুছে দিন।

([ilsvw])(?<!\1.+)
¶$&

(মূলত) চিঠি দ্বিতীয় সংঘটন চিহ্নিত করুন i, l, s, v, অথবা wএকটি স্থানধারক সহ।

¶w
2u

দ্বিতীয় ঘটনাটি ঠিক করুন w

T`i\lsv¶`!i$<_`¶.

অন্যান্য চারটি বর্ণের দ্বিতীয় ঘটনাটি ঠিক করুন।


আপনি কি মনে করেন যে এটি আরও গল্ফ করা সম্ভব?
mdahmoune

@ এমদাহমৌনে হ্যাঁ, আমি মনে করি আমি 33 বাইট সংরক্ষণ করতে পারি
নিল

আমি আপনার উত্তরটিকে ভোট দিয়েছি :) আপনারা যদি 33 বাইট সংরক্ষণ করেন তবে তা দুর্দান্ত হবে;)
এমডাহমূনে

@ এমদাহমৌনে সুসংবাদ, আমি আসলে ৪২ বাইট সংরক্ষণ করেছি!
নীল

দুর্দান্ত, আপনার কোডটি দ্বিতীয় সংক্ষিপ্ততম;)
এমডাহুমনে

3

হাস্কেল , 221 218 213 বাইট

($(f<$>words"w2u li i! s$ v< a@ b8 c( d6 e3 f# g9 h# i1 k< l1 o0 q9 s5 t+ v> wuu x% y?")++[r]).foldr($)
f(a:b)(h:t)|a==h=b++t|1>0=h:f(a:b)t
f _ s=s
r(a:b)|(p,q)<-span(==a)b=[c|c<-show$1+length p,p>[]]++a:r q
r s=s

এটি অনলাইন চেষ্টা করুন!

foldrপিছনে স্ট্রিং ট্রান্সফর্মেশনগুলির ক্রম দিয়ে স্ট্রিং চালানোর জন্য আপত্তি । ক্রমটি "শুরু হয়" rযার সাহায্যে spanস্ট্রিংয়ের লেজটি মাথার সমান হয়ে যাওয়া বন্ধ করার সময় পুনরাবৃত্তি গণনা প্রতিস্থাপন করে । যদি এর প্রথম অংশটি খালি হয় না তবে এটি পুনরাবৃত্তি যাতে আমরা দৈর্ঘ্যটি +1 মুদ্রণ করি। এরপরে আমরা fপ্রতিটি অক্ষর প্রতিস্থাপনের জন্য (বিপরীত) ক্রমে একটি যুক্তিতে কারি করি । প্রতিস্থাপনগুলি একটি একক স্ট্রিং হিসাবে এনকোড করা হয় যার সাথে প্রথম অক্ষরটি প্রতিস্থাপন করা হবে এবং বাকী স্ট্রিং হিসাবে (ডব্লিউ প্রতিস্থাপনগুলি একাধিক অক্ষর) তার জায়গায় যেতে হবে। আমি এই এনকোডযুক্ত স্ট্রিংগুলিকে স্পেস দ্বারা পৃথক করে একটি বড় স্ট্রিংয়ে রেখেছি যাতে wordsএটি আমার জন্য একটি তালিকায় ভেঙে যেতে পারে।

সম্পাদনা: আমাকে লাইকনি ধন্যবাদ 5 বাইট সংরক্ষণ করার জন্য! এটি $আমি যে ভাবি নি সেগুলির একটি চতুর ব্যবহার । আমিও সেই <-কৌশলটি জানতাম না ।


বিস্তারিত ব্যাখ্যার জন্য থ্যাঙ্কস;)
এমদাহমনে

1
আপনি (p,q)<-span(==a)bপরিবর্তে let(p,q)=span(==a)bএবং p>[] পরিবর্তে ব্যবহার করতে পারেন p/=[]
লাইকনি

2
mপয়েন্টফ্রি করে আরও দুটি বাইট সংরক্ষণ করুন : ($(f<$>words"w2u ... y?")++[r]).foldr($) এটি অনলাইনে চেষ্টা করুন!
লাইকনি 21

2

অ্যাপ্লিকেশন Lua , 173 বাইট

s=...for c,r in("uua@b8c(d6e3f#g9h#i1i!jjk<l1limmnno0ppq9rrs5s$t+v>v<wuuw2ux%y?zz"):gmatch"(.)(.u?)"do s=s:gsub(c..c.."+",function(p)return#p..c end):gsub(c,r,1)end print(s)

এটি অনলাইন চেষ্টা করুন!

অবহেলিত এবং ব্যাখ্যা:

s = ...


--This string contains every character to replace, followed by
--the character(s) it should be replaced with.
--
--It also contains all characters for which repeated sequences
--of them should be replaced by "<number><character>". That is,
--all letters in the alphabet. This way, a single loop can do
--both the "replace repeated characters" and "encode characters"
--operations, saving a for loop iterating over the alphabet.
--
--Characters that shouldn't be replaced will be replaced with
--themselves.
--
--In order to avoid matching half of the "replace u with u"
--command as the replace part of another command, "uu" is placed
--at the beginning of the string. This ensures that only the
--2-character replacements for "w" get an extra "u".

cmdstring = "uua@b8c(d6e3f#g9h#i1i!jjk<l1limmnno0ppq9rrs5s$t+v>v<wuuw2ux%y?zz"


--Iterate over all the search/replace commands.
--The character to replace is in the "c" variable, the string to
--replace it with is in "r".
--
--Due to the dummy search/replace commands (i.e. "mm") placed
--in the string, this loop will also iterate over all letters
--of the alphabet.

for c,r in cmdstring:gmatch("(.)(.u?)") do
	
	--First, replace any occurences of the current letter
	--multiple times in a row with "<number><letter>".
	s = s:gsub(c..c.."+", function(p)
		return #p .. c
	end)
	
	--Then, replace the first occurence of the letter
	--with the replacement from the command string.
	s = s:gsub(c, r, 1)
end

print(s)

Lol lua :) ভাল কাজ
mdahmoune

2

সি # (.নেট কোর), 317 , 289 , 279 বাইট

p=>{string r="",l=r,h=r,c="a@b8c(d6e3f#g9h#i1i!k<l1lio0q9s5s$t+v>v<wuw2x%y?";int i=0,n=p.Length,d,a=1;for(;i<n;i++){h=p[i]+"";if(h==p[(i==n-1?i:i+1)]+""&&i!=n-1)a++;else{d=c.IndexOf(h);if(d>=0&&d%2<1){l=c[d+1]+"";h=l=="u"?"uu":l;c=c.Remove(d,2);}r+=a>1?a+""+h:h;a=1;}}return r;};

অনলাইনে চেষ্টা করে দেখুন!

আমি আশা করি একটি ইনপুট হিসাবে একটি চর অ্যারে গ্রহণ করা ঠিক আছে, স্ট্রিং নয়।

অসমাপ্ত :

string result = "", casesCharReplacement = result, currentChar = result, cases = "a@b8c(d6e3f#g9h#i1i!k<l1lio0q9s5s$t+v>v<wuw2x%y?";
int i = 0, n = pas.Length, casesIndex, charAmounts = 1;

// For every char in the pass.
for (; i < n; i++)
{
    currentChar = pas[i] + "";
    // if the next char is equal to the current and its not the end of the string then add a +1 to the repeated letter.
    if (currentChar == (pas[(i == n - 1 ? i : i + 1)] + "") && i != n - 1)
        charAmounts++;
    else
    {
        // Finished reading repeated chars (N+Char).
        casesIndex = cases.IndexOf(currentChar);
        // Look for the replacement character: only if the index is an even position, otherwise I could mess up with letters like 'i'.
        if (casesIndex >= 0 && casesIndex % 2 < 1)
        {
            casesCharReplacement = cases[casesIndex + 1]+"";
            // Add the **** +u
            currentChar = casesCharReplacement == "u"?"uu": casesCharReplacement;
            // Remove the 2 replacement characters (ex: a@) as I won't need them anymore.
            cases = cases.Remove(casesIndex, 2);
        }
        // if the amount of letters founded is =1 then only the letter, otherwise number and the letter already replaced with the cases.
        result += charAmounts > 1 ? charAmounts + ""+currentChar : currentChar;
        charAmounts = 1;
    }
}
return result;

1
হ্যাঁ ঠিক আছে :)
ইনপুটটির

2

সি ++, 571 495 478 444 বাইট

-127 বাইট জ্যাকারি ধন্যবাদ

#include<string>
#define F r.find(
#define U(S,n)p=F s(S)+b[i]);if(p-size_t(-1)){b.replace(i,1,r.substr(p+n+1,F'/',n+p)-p-2));r.replace(p+1,F'/',p+1)-p,"");}
#define V(A)i<A.size();++i,c
using s=std::string;s m(s a){s b,r="/a@/b8/c(/d6/e3/f#/g9/h#/i1//i!/k</l1//li/o0/q9/s5//s$/t+/v>/wuu//w2u/x%/y?/";int c=1,i=0;for(;V(a)=1){for(;a[i]==a[i+1]&&1+V(a)++);b+=(c-1?std::to_string(c):"")+a[i];}for(i=0;V(b)){auto U("/",1)else{U("//",2)}}return b;}

"/a@/b8/c(/d6/e3/f#/g9/h#/i1//i!/k</l1//li/o0/q9/s5//s$/t+/v>/wuu//w2u/x%/y?/"স্ট্রিং একটি অক্ষর থেকে অন্যদের রুপান্তর করতে ব্যবহৃত হয়। 1 এর /অর্থ হ'ল প্রথম "পরের চর" এর পরিবর্তে পরবর্তীটি অনুসরণ করা উচিত /, 2 এর অর্থ দ্বিতীয় "পরের চর" এর দ্বারা অনুসরণ করা উচিত।

এটি অনলাইনে চেষ্টা করুন


দুর্দান্ত, আপনি কি একটি tio.run লিঙ্ক যুক্ত করতে পারেন?
mdahmoune

@ এমদাহমৌনে টিআইও লিঙ্কটি যুক্ত করা হয়েছে, আপনার পরীক্ষার মামলার পরীক্ষার কোড সহ :)
হাটসুপয়েন্টারকুন

494 বাইট , এবং সেই সাথে টিআইও লিঙ্কটি পরিবর্তন করুন যদি তা পরিবর্তন করে।
Zacharý

@ জ্যাচারý আপনার ম্যাক্রোর নাম এবং ম্যাক্রো সামগ্রীগুলির মধ্যে একটি স্থান রাখতে হবে অন্যথায়, সি ++ 17 সংকলন করার সময় এটি একটি ত্রুটি নিক্ষেপ করে। এছাড়াও, আপনি কীভাবে টিআইও লিঙ্কটি মুছবেন তা জানেন? (যেহেতু
পুরানোটি


2

আর , 224 219 বাইট

function(s,K=function(x)el(strsplit(x,"")),u=rle(K(s)))
Reduce(function(x,y)sub(K('abcdefghiiklloqsstvvwwxy')[y],c(K('@8(63#9#1!<1i095$+><'),'uu','2u',K('%?'))[y],x),1:24,paste0(gsub("1","",paste(u$l)),u$v,collapse=""))

এটি অনলাইন চেষ্টা করুন!

অদ্ভুত, তবে মূল অংশটি হ'ল পুনরুদ্ধার বিকল্প Reducesubম্যাচের প্রথম ঘটনাটি পরিবর্তন করে।

একটি দুর্দান্ত গল্ফ দেখানোর জন্য জ্যাকিকে ধন্যবাদ!


ভাল কাজ :))))))
এমডাহমনে

আরোগুলি পুনর্বিন্যাস করে 1 বাইট সংরক্ষণ করুন। আমি জানি যে একটি বিশাল পার্থক্য তৈরি করে না;)
জেইসি 24:38

@ জায়েসি আমি আরও কিছু বাইট পেয়েছি :-)
জিউসেপ

1

পার্ল 5 , 123 বাইট

122 বাইট কোড +1 এর জন্য -p

স্বাধীনভাবে @ থেকে উন্নত Xcali এর উত্তর , কিন্তু একটি অনুরূপ প্রক্রিয়া ব্যবহার করে।

s/(.)\1+/$&=~y!!!c.$1/ge;eval"s/$1/$2/"while'a@b8c(d6e3f#g9h#i1i!k<l1lio0q9s5t+v>v<x%y?'=~/(.)(.)/g;s/s/\$/;s/w/uu/;s;w;2u

এটি অনলাইন চেষ্টা করুন!


1

পাইথন 2 , 220 216 194 190 188 বাইট

import re
S=re.sub(r'(.)\1+',lambda m:`len(m.group(0))`+m.group(1),input())
for a,b in zip('abcdefghiiklloqsstvvxyww',list('@8(63#9#1!<1i095$+><%?')+['uu','2u']):S=S.replace(a,b,1)
print S

এটি অনলাইন চেষ্টা করুন!

পাইথন 3 , 187 বাইট

import re
S=re.sub(r'(.)\1+',lambda m:str(len(m.group(0)))+m.group(1),input())
for a,b in zip('abcdefghiiklloqsstvvxyww',[*'@8(63#9#1!<1i095$+><%?','uu','2u']):S=S.replace(a,b,1)
print(S)

এটি অনলাইন চেষ্টা করুন!


থ্যাঙ্কস টিফেল্ড 192 বাইটস tio.run/…
mdahmoune

দুর্দান্ত গল্ফিং;)
mdahmoune

186 বাইট । আপনি এটিকে 192 বাইটে সহজেই পাইথন 3 এ পোর্ট করতে পারেন তবে এটির আলাদা উত্তর হওয়া উচিত বলে আমি মনে করি না।
নিডজেজেকব

@ নিডজেজেকোব মনে হচ্ছে আপনার গল্ফড পাইথন 2 সংস্করণটি ওপি'র বর্তমান সংস্করণ বা আপনার পাইথন 3 সংস্করণের চেয়ে আলাদা আউটপুট তৈরি করে।
জোনাথন ফ্রেচ

@ জোমাথানফ্রেচ দুঃখিত, সর্বদা হিসাবে উত্পাদন সম্পর্কে পরীক্ষা করা। 188 বাইট
নিডজেজেকব

1

পিপ , 103 102 বাইট

aR:`(.)\1+`#_.B
Fm"abcdefghiiklloqsstvvwwxy"Z"@8(63#9#1!<1i095$+><WU%?"I#Ya@?@maRA:ym@1aR'W"uu"R'U"2u"

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

কোডটি রূপান্তরের তিনটি পদক্ষেপ করে:

aR:`(.)\1+`#_.B  Process runs of identical letters

a                1st cmdline argument
 R:              Do this replacement and assign back to a:
   `(.)\1+`       This regex (matches 2 or more of same character in a row)
           #_.B   Replace with callback function: concatenate (length of full match) and
                  (first capture group)
                  Note: #_.B is a shortcut form for {#a.b}

Fm"..."Z"..."I#Ya@?@maRA:ym@1  Do the bulk of rules 2-25

  "..."                        String of letters to replace
       Z"..."                  Zip with string of characters to replace with
Fm                             For each m in the zipped list:
                   @m           First item of m is letter to replace
                a@?             Find its index in a, or nil if it isn't in a
               Y                Yank that into y
             I#                 If len of that is truthy:*
                     aRA:        Replace character in a at...
                         y        index y...
                          m@1     with second item of m

aR'W"uu"R'U"2u"  Clean up substitution
                 In the previous step, the replacements each had to be a single character.
                 This doesn't work for uu and 2u, so we use W and U instead (safe, since
                 uppercase letters won't be in the input) and replace them here with the
                 correct substitutions.
aR'W"uu"         In a, replace W with uu
        R'U"2u"  and U with 2u
                 and print the result (implicit)

* আমাদের পরীক্ষা করা দরকার a@?m@0শূন্য কিনা । এটি সত্য যে এটি পরীক্ষা করা যথেষ্ট নয়, যেহেতু 0 টি বৈধ সূচক যা মিথ্যা। কোনও মান শূন্য হলে পাইপের পরীক্ষা করার জন্য একটি সংক্ষিপ্ত অন্তর্নিহিত উপায় নেই, তবে এর দৈর্ঘ্য পরীক্ষা করা এই ক্ষেত্রে যথেষ্ট ভাল কাজ করে: যে কোনও সংখ্যার দৈর্ঘ্য কমপক্ষে 1 (সত্যবাদী) হবে এবং শূন্যের দৈর্ঘ্য নীল হবে (মিথ্যা)।

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