ইউআরএল-বন্ধুত্বপূর্ণ শিরোনাম


28

এই সাইটের লোকেরা সত্যই তাদের পোস্টের শিরোনামগুলি শোভিত করতে পছন্দ করে ...

Stewie's sequence: + * - / + * - /

যাইহোক, যখন এই শিরোনামটি পৃষ্ঠা URL- এ অন্তর্ভুক্ত করা দরকার, এটি সরল করা হয়েছে:

stewies-sequence

চ্যালেঞ্জ

আপনার কাজটি এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করা যা কোনও পোস্ট শিরোনামের প্রতিনিধিত্ব করে একটি স্ট্রিং প্রদান করে, তার "URL- বন্ধুত্বপূর্ণ" রূপান্তরকে আউটপুট দেয় / প্রদান করে।

অ্যালগরিদমটি হ'ল:

  • ছোট হাতের মধ্যে রূপান্তর (যেখানে প্রযোজ্য)
  • প্রতিটি স্থান ( ), সময়কাল ( .), কমা ( ,) বা স্ল্যাশ ( /) একটি ড্যাশ ( -) দিয়ে প্রতিস্থাপন করুন
  • ড্যাশগুলি বাদে কোনও অ-অক্ষরীয় অক্ষর মুছুন।
  • সংলগ্ন ড্যাশগুলির গোষ্ঠীগুলি মাইনাই করুন ( a---b -> a-b), শীর্ষস্থানীয় / পিছনে যেকোনটি সরান।

দয়া করে মনে রাখবেন যে এই অ্যালগরিদম একটি সরলীকরণ, এবং সর্বদা সাইটের আসল পদ্ধতির মতো ফলাফল তৈরি করতে পারে না।


বিধি

  • আপনি যে ইনপুট ধরে নিতে পারেন:
    • খালি থাকবে না।
    • কমপক্ষে একটি বর্ণানুক্রমিক অক্ষর থাকবে।
    • কেবলমাত্র ASCII পরিসীমা 32-126 (মুদ্রণযোগ্য) এর মধ্যে অক্ষর থাকবে
  • সম্পূর্ণ প্রোগ্রাম বা ফাংশন অনুমোদিত।
  • একটি বিল্টিন যা সঠিক কাজের নির্দিষ্টকরণের অনুমতি দেয় তা অনুমোদিত নয়
  • এটি , তাই সংক্ষিপ্ততম সমাধান (বাইটে) জিতে!

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

এই সাইটের বেশিরভাগ পোস্ট পরীক্ষা হিসাবে পরিবেশন করবে, তবে এখানে একটি কার্যকর তালিকা রয়েছে:

Loading... Forever       -> loading-forever
N(e(s(t))) a string      -> nest-a-string
"Hello, World!"          -> hello-world
URL-Friendly titles      -> url-friendly-titles

C.U.S.R.S                -> c-u-s-r-s
1+2+3+4+...+n = -1/12?   -> 1234-n-1-12
How can I use cmp(a,b)   -> how-can-i-use-cmpa-b

কিছু দীর্ঘতর ...

Export The $PATH Variable, Line-By-Line   -> export-the-path-variable-line-by-line
Do n and n^3 have the same set of digits? -> do-n-and-n3-have-the-same-set-of-digits
Quine Anagrams! (Cops' Thread)            -> quine-anagrams-cops-thread
The Golfer Adventure - Chapter 1          -> the-golfer-adventure-chapter-1
Bootloader golf: Brainf***                -> bootloader-golf-brainf

এবং কিছু এজ-কেস পরীক্ষা করার নমুনা (আরও পরামর্শ দিতে নির্দ্বিধায়):

0123   ->   0123
a a1   ->   a-a1
2-1=1  ->   2-11

শীর্ষস্থানীয় -এস সম্পর্কে কী ? তাদের কি সরানো হবে? উদাহরণস্বরূপ asdf-, শেষগুলি -কি সরানো হবে?
ক্রিটসি লিথোস

if(isalphanum(ch))...
মুকুল কুমার

1
@ ক্রিটিক্সিলিথোস মিনিফাইটি সংলগ্ন ড্যাশগুলির গোষ্ঠীগুলি (a --- b -> ab), শীর্ষস্থানীয় / অনুসরণকারী যে কোনওটিকে সরিয়ে ফেলুন। আমি মনে করি এটি আপনার পরিষ্কার করা উচিত।
মুকুল কুমার

এবং _আন্ডারস্কোর সম্পর্কে কি ? আন্ডারস্কোরগুলি ছাড়া আমার কোডটি কাজ করে।
ক্রিটসি লিথোস

@ এল3ভিয়াথন এখন কিছু যায় আসে না, আমি আমার কোডটি পরিবর্তন করে দিয়েছি যাতে এমনকি আন্ডারস্কোরগুলিও সরানো হয়
ক্রিটিক্সী লিথোস

উত্তর:


7

রেটিনা, 33 31 বাইট

T`L`l
[^a-z ,-9]+

\W+
-
^-|-$

(প্রোগ্রামটির একটি নতুন পেজ রয়েছে

আমি নিশ্চিত নই যে আমি এর থেকে আরও নিচু করতে পারি। এটি সমস্ত কিছু আবরণ করা উচিত। মামা ফান রোলের মতোই এসেছিল। পুনরাবৃত্তিমূলক regexes ব্যবহার করে অন্য 33 বাইট সংস্করণ

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

ব্যাখ্যা

T`L`l

এই লাইনটি সহজ, এটি টি ট্রান্সলাইটারেটিং A-Z( L) থেকে a-z( l, লোয়ারকেস) দ্বারা ছোট হাতের কাছে রূপান্তর করে ।


এই পর্যায়েটি সহজ, পরে আমাদের অনেক ঝামেলা বাঁচানোর জন্য এটি সমস্ত অনিবদ্ধ অক্ষরগুলি থেকে মূলত মুক্তি পেয়ে যায়

[^a-z ,-9]+

[^a-z ,-9] এমন কোনও চরিত্রের সাথে মেলে যা না:

  • a-z: ছোট হাতের বর্ণমালা (মনে রাখবেন পুরো স্ট্রিং পূর্ববর্তী আইটেমের কারণে ছোট হাতের অক্ষর)
  • : স্পেস চ্যাস্টার
  • ,-9এই গৃহস্থালির কাজ কোড পরিসর ,থেকে 9যা হতে হবে ,-./0123456789, ঠিক অক্ষর আমরা প্রয়োজন

এরপরে আমরা সমস্ত অ্যালফানিউমারিক অক্ষরকে ড্যাশগুলিতে রূপান্তর করি (যা এখন স্রেফ এবং ,./-

\W+
-

এটি (না) মিলবে না _যা অন্তর্ভুক্ত রয়েছে \w(প্রত্যাখ্যান \W) কারণ এটি আগের পর্যায়ে সরানো হয়েছিল


আমি মনে করি এটি ইনপুটগুলির মতো ব্যর্থ হবে a = b
মার্টিন এন্ডার

আমি সত্যিই এটি মেনে নিতে চাই, তবে মার্টিন যেমন বলেছিলেন, আপনি যখন ইনপুট a = b
দিবেন

@ Flp.Tkc দেরিতে সাড়া পাওয়ার জন্য দুঃখিত (এখনই ফাইনালস সপ্তাহে)। আমি আরো দুটি বাইট আলিঙ্গন পরিচালিত করেছি এবং এটা ঠিক। আমি বিশ্বাস করি এটি এখন এই ধরণের কেসগুলি সঠিকভাবে পরিচালনা করে
ডাউনগোট

9

জাভাস্ক্রিপ্ট (ES6), 90 82 79 75 বাইট

এই একক সঙ্গে কাজ করার চেষ্টা করা হয় replace()। এই কোডটি কেবলমাত্র সেই অক্ষরগুলিই বের করে যার সাথে আমরা আগ্রহী এবং অন্য সব কিছু উপেক্ষা করি। হাইফেনগুলি প্রক্রিয়া করার জন্য কিছু অতিরিক্ত যুক্তি রয়েছে।

s=>(s.toLowerCase().replace(/[ a-z,-9]/g,c=>S=c<'0'?s+'-':s=s?S+c:c,s=0),s)

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


1
কারণ ,a^a,, এই কোডটি দেয় -aa-(সেখানে শীর্ষস্থানীয় / পিছনের হাইফেন রয়েছে)
ক্রিটিক্সী লিথোস

@ ক্রিতিক্সিলিথোস ওহ, এটি দেখানোর জন্য ধন্যবাদ thanks আমি সেই নিয়মের দিকে মনোযোগ দিইনি। এটা ঠিক করা উচিত।
আরনাউল্ড

9

ভি , 41, 40, 37 , 36 বাইট

VuÍ[ .,\/]/-
Í0-9a-z­]
Í-«/-
Í^-ü-$

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস একবারে পরীক্ষা করে দেখুন!

যথারীতি, এখানে এটি মুদ্রণযোগ্য এবং অ-ASCII অক্ষরগুলির একটি গোছা রয়েছে, সুতরাং এখানে একটি হেক্সডাম্প রয়েছে:

0000000: 5675 cd5b 202e 2c5c 2f5d 2f2d 0acd 8430  Vu.[ .,\/]/-...0
0000010: 2d39 612d 7aad 5d0a cd2d ab2f 2d0a cd5e  -9a-z.]..-./-..^
0000020: 2dfc 2d24                                -.-$

এটি এর মতো চ্যালেঞ্জ যেখানে ভি'র "সংকোচিত রেজেক্স" সিস্টেমটি কাজে আসে।

ব্যাখ্যা

প্রথম জিনিসগুলি, আমরা সমস্ত ছোট হাতের মধ্যে রূপান্তর করব। ভাগ্যক্রমে দুটি বাইটে এটি করার একটি খুব সুবিধাজনক উপায় রয়েছে। আমি এখানে সে সম্পর্কে একটি টিপ লিখেছি । সুতরাং আমরা কি

V           " Visually select this whole line
 u          " Convert this whole line to lowercase

এর পরে আমরা সংক্ষেপিত বিকল্প কমান্ডগুলির একটি গুচ্ছটি করি। ভি'র সংকীর্ণ রেজেক্স কীভাবে কাজ করে তার একটি সুন্দর ওভারভিউ এখানে জোরে জোরে শোনা যায় তবে প্রাথমিক ধারণাটি হ'ল আমরা নির্দিষ্ট অক্ষরগুলি থেকে বাঁচতে না পেরে হাই-বিট সেট করতে পারি। আরেকটি সুবিধা হ'ল রেঞ্জগুলি (যেমন :%) এবং পতাকাগুলি (যেমন /g) স্বয়ংক্রিয়ভাবে পূরণ করা হয় But তবে শেষ পর্যন্ত, এটি সমস্ত ভিম বিকল্প বিকল্প কমান্ডে অনুবাদ করে। প্রকৃতপক্ষে, আমরা এমনকি সরাসরি প্রোগ্রামের বাকীটি ভিমে অনুবাদ করতে পারি। এটি আমাদের দেবে:

:%s/[ .,/]/-/g
:%s/[^0-9a-z\-]//g
:%s/-\+/-
:%s/^-\|-$//g

আপনি যদি ভিম-রেজেক্স কথা বলেন তবে প্রোগ্রামের বাকি অংশগুলি এখন কী করে তা আরও স্পষ্ট হওয়া উচিত। প্রোগ্রামটির বাকী অংশটি এখানে:

Í               " Substitute:
 [ .,\/]        "   a space, period, comma or forward slash. (Due to a strange bug, this needs to be escaped)
        /-      "   with a dash
Í               " Remove:
 [^0-9a-z­]     "   Any character that is not a dash or alpha-numeric
Í               " Substitute:
 -«             "   One or more dashes
   /-           "   with one dash
Í               " Remove:
 ^-             "   A dash at the beginning of a line
   ü            "   OR
    -$          "   a dash at the end of a line

8

জাভাস্ক্রিপ্ট (ES6) 91 96

1 বাইট সংরক্ষিত thx @ETH প্রোডাকশন

s=>s.toLowerCase().replace(/([ .,/-])|\W|_/g,(c,d)=>d?'-':'').replace(/^-*|-*$|-(?=-)/g,'')

পরীক্ষা

F=
s=>s.toLowerCase().replace(/([ .,/-])|\W|_/g,(c,d)=>d?'-':'').replace(/^-*|-*$|-(?=-)/g,'')

;[['Loading... Forever.....', 'loading-forever'],
['N(e(s(t))) a string', 'nest-a-string'],
['"Hello, World!"', 'hello-world'],
['URL-Friendly titles', 'url-friendly-titles'],
['C.U.S.R.S','c-u-s-r-s'],
['1+2+3+4+...+n = -1/12?', '1234-n-1-12'],
['How can I use cmp(a,b)', 'how-can-i-use-cmpa-b'],
['Export The $PATH Variable, Line-By-Line', 'export-the-path-variable-line-by-line'],
['Do n and n^3 have the same set of digits?', 'do-n-and-n3-have-the-same-set-of-digits'],
['Quine Anagrams! (Cops\' Thread)', 'quine-anagrams-cops-thread'],
['The Golfer Adventure - Chapter 1', 'the-golfer-adventure-chapter-1'],
['Bootloader golf: Brainf***', 'bootloader-golf-brainf'],
['0123', '0123'],
['a a1', 'a-a1'],
['2-1=1', '2-11']]
.forEach(t=>{
  var i=t[0],k=t[1],r=F(i)
  console.log(r==k?'OK':'KO',i+' -> '+r,r==k?'':k)
})


এটি আমার উত্তর হিসাবে ঠিক একই বাইকোয়েন্ট আছে যদি এটি একটি নামকরণ ফাংশনে রূপান্তরিত হয়
ক্রিটসি লিথোস

শেষের *
রেজেজেজে

আমার ভুল হতে পারে তবে আপনি কি নিশ্চিত যে নজরদারি দরকার?
ক্রিটসি লিথোস

@ ক্রিটিক্সিলিথোস চেহারাটি কমপক্ষে 1 - স্ট্রিংয়ের ভিতরে রাখা শুরু করা উচিত, সমস্ত শুরু এবং শেষে অপসারণ করার সময়
edc65

@ পাঠ্যক্রম ঠিক আছে, ধন্যবাদ
edc65

4

পাইথন 3, 103 100 96 95 বাইট

5 বাইট সংরক্ষিত Flp.Tkc ধন্যবাদ

import re
lambda s,y=re.sub,d='-':y('-+',d,y('[^0-9a-z-]','',y('[ .,/]',d,s.lower()))).strip(d)

@ Flp.Tkc সত্যই ..
এল

ওফস, আমি দুর্ঘটনাক্রমে এটিকে হ্রাস করেছি। আপনি এই পোস্টটি সম্পাদনা না করা পর্যন্ত আমি আমার ভোটটি বিপরীত করতে পারি না
ক্রিটিক্সী লিথোস

@ ক্রিটিক্সিলিথোস সম্পন্ন
L3viathan

4

রেটিনা, 34 বাইট

T`L`l
[^ আজ \ ডি।, / -] +

\ ওয়াট + +
-
^ - | - $

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

চলমান নিউলাইনটি নোট করুন। মূলত ওপি'র বাস্তবায়ন।


টিআইও লিঙ্কটি কিছুটা আলাদা কোডের
দিকে ইঙ্গিত করে

হ্যাঁ, আমি এটি ঠিক করেছি।
মামা ফান রোল

1
আপনি T`L`lকম বাইট নিয়ে লোয়ারকেসে যেতে ব্যবহার করতে পারেন
ডাউনগোট

ব্যর্থ হলে a..Snd অনুরূপ
Downgoat


3

এমএটিএল , 38 বাইট

'-'jyvk45y' .,/'m(t8Y245hm)'-*'45YX6L)

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

'-'jyv       % Take input line. Append and prepend a dash. Gives a char column vector
k            % Convert to lowercase
45y' .,/'m(  % Replace any of ' .,/' by a dash, using assignment indexing
t8Y245hm)    % Keep only alphanumeric chars or dashes, using reference indexing
'-*'45YX     % Replace each run of dashes by a single dash, using a regular expression
6L)          % Remove first and last chars, which are always dashes. Implicitly display

3

রুবি , 61 60 61 64 53 বাইট

(কোডের 52 টি বাইট প্লাস ওয়ান বাইট এর জন্য -p)

$_=$_.tr("A-Z ,-/","a-z ").gsub(/[^\w ]/){}.split*?-

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

tr()- বড় হাতের অক্ষর, স্থান, কমা, সময়কাল এবং স্ল্যাশ রূপান্তর করুন। সাময়িকভাবে -হোয়াইটস্পেসের সাথে বিকল্পটি প্রতিস্থাপন করুন যাতে আমি stripপরে ব্যবহার করতে পারি ।
লক্ষ করুন এক্সপ্রেশনের -অক্ষরটি "A-Z ,-/"আসলে একটি ব্যাপ্তি অপারেটর, যা .চরিত্রটিকে রূপান্তরের বিষয় হিসাবেও তৈরি করে । এই কৌশলটি আসলে বাইটগুলি শেভ করে না তবে এটি অভিনব তাই এটি থাকার জন্য।

gsub(/[^\w ]/){} - অনুমোদিত সেটটিতে না থাকা সমস্ত অক্ষর মুছে ফেলুন।

split- প্রযুক্তিগতভাবে, আমাদের ঠিক সেই অ্যারের প্রয়োজন নেই তবে splitনেতৃস্থানীয় এবং পিছনের সাদা অংশটি (যা প্রকৃতপক্ষে -ছদ্মবেশে অক্ষরগুলি) দূর করে। বোনাস হিসাবে, এটি একসাথে একাধিক স্পেসে রান করে।

*?-- শর্টহ্যান্ডের জন্য .join("-"); এটি পূর্ববর্তী splitঅপারেশন এবং একই সাথে হোয়াইটস্পেস রূপান্তর উভয়কেই বিপরীত করে । অক্ষর অক্ষরের জন্য সংক্ষিপ্ত স্বরলিপি ব্যবহার করে আরও একটি বাইট সংরক্ষণ করা হয় , যা প্রোগ্রামটির রুবি ১.৯ বা তার চেয়েও নতুন প্রয়োজন।

আপডেট 1: রুবির স্ট্রিম এডিটিং মোডের পরিবর্তে ব্যবহার getsকরা একটি বাইট সংরক্ষণ করে।
অনুযায়ী প্রত্যাবর্তিত ValueInk এর পরামর্শ

আপডেট 2: (সামগ্রিকভাবে +3 বাইট)

  • স্থির প্রান্তের কেস ..--hi, $/(→ hi) (+১০ বাইট) - আবারও ব্যবহারকারী ভ্যালিউইঙ্কের সৌজন্যে
  • (+1 বাইট) এর জন্য মালালস নিয়েছে-p
  • এর থেকে মুক্তি পেয়েছি squeezeএবং gsubপরিবর্তে (+২ বাইট) ব্যবহার করা হয়েছে , যা আমাকে এটির অনুমতি দিয়েছে:
  • stripনেতৃস্থানীয় এবং অনুসরণযোগ্য ড্যাশগুলি হ্যান্ডেল করতে ব্যবহার করুন (-10 বাইট)

আপডেট 3: হ্যাটট্রিক বাই ভ্যালুআইঙ্ক। আমরা String#splitএকই বিভাজনকারীদের অটো-চেঁচানো রানের অভ্যাসটি কাজে লাগিয়ে 11 বাইট সংরক্ষণ করি , যা আমাদের পুরো ফাইনাল strip/ gsubচেইনটি খনন করে এবং এটি split/ joinকম্বো দ্বারা প্রতিস্থাপন করতে সক্ষম করে । (-11 বাইট)


এটি কেবলমাত্র একটি REPL পরিবেশে স্ট্রিংটি প্রদান করে এবং যথাযথ রুবি প্রোগ্রাম হিসাবে চালিত হলে ব্যর্থ হয় এবং এটি কোনও ভাল নয়। সম্পূর্ণ প্রোগ্রাম বা ফাংশন / ল্যাম্বডাস কেবল। আসলে, আপনার পুরানো সংস্করণটি -pপতাকাটির সাথে কাজ করবে , তবে এটি অবশ্যই কার্যকর হবে না।
মূল্য কালি

@ ভালিউইঙ্ক আপনি অবশ্যই সঠিক আছেন। আমি সে অনুযায়ী আমার সমাধান পরিবর্তন করেছি। আপনার মন্তব্যের জন্য ধন্যবাদ; এটি ঠিক সেই ধরণের দিকনির্দেশনা যা আমি অনেক প্রশংসা করি কারণ এটি গল্ফ করার আমার প্রথম প্রচেষ্টা।
Synoli

1
সংশোধন করার জন্য আপনাকে ধন্যবাদ; আমি আমার ডাউনটোট সরিয়েছি একটি বিষয় লক্ষণীয় হ'ল -pপতাকাটি নিখুঁতভাবে আপনার কোডগুলিতে 1 বাইট যুক্ত করে (কারণ এটি আপনার কোডের প্রয়োগকে বদলে ruby -e 'your code'দেয় ruby -pe 'your code')। আমি এমন একটি প্রান্তের কেসও পেয়েছি যেখানে এটি -hi-ইনপুট হিসাবে দেয় ..--hi, $/যখন আপনাকে সমস্ত নেতৃস্থানীয় / অনুসরণযোগ্য ড্যাশগুলি সরিয়ে ফেলা উচিত এবং এভাবে ফিরে আসবে hi
মূল্য কালি

2
-2 বাইট এ পরিবর্তন gsub(/[^\w ]/){}করে tr('^a-z ','')এবং তারপরে এটি শেষ .split*?-হওয়ার .strip.gsub...পরে এটি স্বয়ংক্রিয়ভাবে সদৃশ এবং স্ট্রিংয়ের শেষগুলি হ্যান্ডেল করে, সমস্ত একসাথে !
মান কালি

1
যেহেতু কেউ এটি বলে নি, কোড-গল্ফে আপনাকে স্বাগতম!
ফ্লিপট্যাক

3

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

f=
s=>s.toLowerCase().replace(/[^-/,. a-z\d]/g,``).match(/\w+/g).join`-`
<input oninput=o.textContent=/[a-z\d]/i.test(this.value)?f(this.value):``><pre id=o>

সম্পাদনা করুন: আমি ইতিমধ্যে সমস্ত অক্ষর মুছে ফেলেছি তা বুঝতে পেরে 5 বাইট সংরক্ষণ করা হয়েছে -/,. 0-9a-zযাতে আমি \wবাকী শব্দের সাথে মেলে ব্যবহার করতে পারি।


আমার মনে হয় আপনি এইচটিএমএল কোডটি বাইট কাউন্টে অন্তর্ভুক্ত করতে হবে যেহেতু এটি চ্যালেঞ্জটি সমাধান করার জন্য ব্যবহৃত হচ্ছে
ক্রিটসি লিথোস

1
@ ক্রিটিক্সিলিথোস না, এটি কেবলমাত্র বিক্ষোভের উদ্দেশ্যে রয়েছে। প্রশ্নটি বলছে যে আমার কোডটি কমপক্ষে একটি বর্ণমালার অক্ষর ধরে নিতে পারে এবং এইচটিএমএল কোডটি ফাংশনটি কল করার আগে কেবল এটি পরীক্ষা করে।
নীল

[a-z\d]হতে পারে [^\W_]?
edc65

@ edc65 চমৎকার, তবে আমি তখন বুঝতে পারি যে এটি আরও সহজ হতে পারে!
নিল

2

পিএইচপি, 87 বাইট

নিয়মিত প্রকাশের ধারণাটি বিদ্যমান উত্তরগুলি থেকে আসে।

<?=trim(preg_replace(['@[^ a-z,-9]@','@[ ,-/]+@'],['','-'],strtolower($_GET[T])),'-');

এটির জন্য আপনার পিএইচপি চালিত সার্ভার থাকা এবং HTTP- র মাধ্যমে অ্যাক্সেস থাকা দরকার।

শিরোনামটি অবশ্যই কীটিতে থাকা উচিত T, এবং ফলাফলটি স্ক্রিনে মুদ্রিত হবে।

উদাহরণ: http://localhost/title.php?T=<my shiny title>


2

বাশ / ইউনিক্স সরঞ্জাম, 56 বাইট

tr A-Z\ .,/ a-z-|tr -cds a-z0-9- -|sed s/^-//|sed s/-$//

লোয়ার-কেস অক্ষর এবং ড্যাশগুলির সাথে প্রয়োজনীয় বিশেষ অক্ষরগুলি দিয়ে আপার-কেস প্রতিস্থাপন করুন।

অক্ষর, অঙ্কগুলি এবং ড্যাশগুলি ব্যতীত অক্ষরের (-d বিকল্পে) মুছে ফেলুন এবং তারপরে একাধিক ড্যাশগুলিকে একক ড্যাশগুলিতে সঙ্কুচিত করুন (ট্র-টু বিকল্প)

শুরুতে এবং তারপরে ড্যাশগুলি মুছুন।


2

পাওয়ারশেল, 85 বাইট

($args[0].ToLower()-replace'[ .,/]','-'-replace'[^a-z,-9]'-replace'-+','-').Trim('-')

এটা একটি সারিতে ছোট হাতের অক্ষরে, তারপর 3 Regex প্রতিস্থাপন করতে, এবং কোন চিহ্ন ছাঁটা -এর


$inputআপনি 2 বাইট বাঁচাতে পারে না ?
ব্রিটিশবাদী

2

জাভাস্ক্রিপ্ট, 90 98 94 93 91 90 91 বাইট

1 বাইট সংরক্ষিত হয়েছে @ এডসি 65 এর জন্য ধন্যবাদ!

একটি শীর্ষস্থানীয় আধা-কোলন চিহ্নিত করার জন্য @ ইসমাইল মিগুয়েলকে 1 বাইট সংরক্ষণ করা হয়েছে!

ব্যর্থ হওয়ার পরে 1 বাইট লাভ করেছে ,a-^-a,

f=s=>s.toLowerCase().replace(/[^ a-z,-9]/g,"").replace(/[ ,-/]+/g,"-").replace(/^-|-$/g,"")

এই বিশেষ জমা দেওয়ার ক্ষেত্রে আমি যে জিনিসটি সবচেয়ে বেশি পছন্দ করি তা হ'ল ব্যাপ্তি। প্রথম replace, আমরা যে কিছু আলফানিউমেরিক এবং না একটি নয় অপসারণ ,, -, ., /এবং না একটি স্থান। আমরা a-zঅক্ষরগুলি সনাক্ত করার জন্য ব্যবহার করি এবং আমরা ,-9এই বিশেষ অক্ষর এবং সংখ্যাগুলি সনাক্ত করতে ব্যবহার করি যেহেতু এই ASCII এর অক্ষর কোডগুলি সমস্ত লাইন আপ করে!

, = 44
- = 45
. = 46
/ = 47
0 = 48
...
9 = 57


শীর্ষস্থানীয় ড্যাশগুলি সরান না: "-1" "-1" হয়ে যায়, যখন এটি "1" হয়ে উঠবে।
L3viathan

@ L3viathan এখনই কাজ করা উচিত
Kritixi Lithos

গণনা করার দরকার নেই f=তাই এখন আপনার বাইট গণনাটি 96। এবং ...title
রেজিপ্স্পের

1
Hei! আমি যে বয়সী না ! (65 নয় 64)
edc65

1
আমি বিশ্বাস করি আপনি প্রয়োজন নেই f=এবং ;শেষে। কেবলমাত্র এটি নির্দিষ্ট করুন যে এটি একটি বেনাম ফাংশন। এটির সাথে আপনার উত্তর 90 বাইট দীর্ঘ হওয়া উচিত।
ইসমাইল মিগুয়েল

1

লুয়া, 91 বাইট

a=a:lower():gsub( '[ .,/]', '-' ):gsub( '[^%w-]', '' ):gsub( '%-+', '-' ):match'%-?(.*)%-?'

aইউআরএল স্ট্রিং কোথায় ।

ব্যাখ্যা:

  • এটি বেশিরভাগই সোজা এগিয়ে forward a:lower()লোয়ার-কেস ফাংশন প্রদান করে
  • :gsub প্যাটার্নটির মিল খুঁজে পায় এবং স্ট্রিংয়ের সাথে প্রতিস্থাপন করে।
  • '[ .,/]': বন্ধনীর অর্থ "বা", সুতরাং এটি স্থান, কাল, কমা এবং স্ল্যাশের সাথে মেলে। লোভী হওয়ার :gsubদরকার নেই কারণ সমস্ত ঘটনা ঘটে।
  • '[^%w-]': ^মানে বন্ধনীর ভিতরে থাকা অবস্থায় "না" %wমানে কিছু অক্ষরযুক্ত। তাই আলফানিউমারিক বা ড্যাশ নয়'[^%w-] এমন কোনও কিছুর সাথে মেলে ।
  • '%-+': আপনি যতটা ড্যাশ পারেন তার সাথে মিল দিন এবং সেগুলি কেবল একটি ড্যাশ দিয়ে প্রতিস্থাপন করুন।
  • match'%-?(.*)%-?': লুয়ায়, কোনও স্ট্রিং যদি ফাংশনটির একমাত্র যুক্তি হয় তবে কোনও বন্ধনী প্রয়োজন হয় না। কেবলমাত্র শুরু এবং শেষের সময় একটি ড্যাশ যাচাই করা দরকার কারণ ড্যাশগুলি ইতিমধ্যে হ্রাস করা হয়েছে। অ্যাঙ্কর চরিত্রগুলির প্রয়োজন নেই কারণ .*লোভী, সমস্ত কিছুর সাথে মেলে।

1

সি, 194 বাইট

i,j;f(char*s,char*d){if(*s>47&*s<58|*s>96&*s<123)d[i++]=*s;if(*s>64&*s<91)d[i++]=*s+32;if(i-j&&*s>43&*s<48|*s==32&&*(s+1)&&*(s+1)>47|(*(s+1)<44&&*(s+1)^32)){d[i++]=45;j=i;}*++s?f(s,d):(d[i]=0);}

সাথে কল করুন:

int main()
{
    char *in="Loading... Forever";
    char out[128];
    f(in,out);
    puts(out);
}

1

এসএএস, 108

এসএএসের ভার্বোস সিনট্যাক্সের কারণে এখানে কম প্রতিযোগিতামূলক উত্তরগুলির মধ্যে একটি - রিজেক্সে 9 টি চরিত্রের জরিমানাটি সত্যিই ব্যথা করে - তবে এটি একটি ভাল রেজেক্স শেখার অনুশীলন ছিল:

t=prxchange('s/^-|-$//',-1,prxchange('s/-+/-/',-1,compress(translate(lowcase(t),'----',' .,/'),'-','adk')));

1

পাইথ, 35 বাইট

:r::rQ0"[-.,/]"d"[^\w ]"k6"[ -]+"\-

ব্যাখ্যা

    rQ0                              Convert letters to lower case
   :   "[-.,/]"d                     Replace all -.,/ with spaces
  :             "[^\w ]"k            Remove all remaining symbols
 r                       6           Remove leading and trailing spaces
:                         "[ -]+"\-  Turn runs of spaces and dashes to one dash

1

পার্ল 6, 75

{lc .subst(/<[\ .,/]>/,"-"):g.subst(/<[\W]-[\-]>/,""):g.subst(/\-+/,"-"):g}

0

জিএনইউ সেড, 65 বাইট

s/.*/\L\0/
s@[ .,/]@-@g
s/[^-a-z0-9]//g
s/-\+/-/g
s/^-\|-$//g

রেগেক্স বিকল্পগুলির একটি সিরিজ। \Lইনপুট ছোট করতে GNU সেড থেকে অ-বহনযোগ্য ব্যবহার করে Uses ব্যবহার করে একটি ফাইল চালান sed -f

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