9-গর্ত মিনি-গল্ফ: পাঠ্য ম্যানিপুলেশন [বন্ধ]


26

9-গর্ত মিনি-গল্ফ: বর্ণনা

  • 9 (বেশিরভাগই মোটামুটি সহজ) কোডের বিভিন্ন ধরণের অসুবিধার চ্যালেঞ্জ
  • একাধিকবার একই ভাষা ব্যবহারের দণ্ড
  • একটি নির্দিষ্ট থিম সম্পর্কে সমস্ত চ্যালেঞ্জ (এই থিম: পাঠ্য ম্যানিপুলেশন)
  • ইনপুট এবং আউটপুট যে কোনও জায়গায় যুক্তিসঙ্গত হতে পারে (যেমন STDIN এবং STDOUT, কোনও ফাইল থেকে / লেখার পক্ষে পড়া, ফাংশন আর্গুমেন্ট এবং রিটার্ন মান ইত্যাদি) তবে প্রোগ্রামটিতে হার্ডকোড করা উচিত নয় must
  • ভারীভাবে 9 টি হোল চ্যালেঞ্জ এবং পাঠ্য মেকানিক দ্বারা অনুপ্রাণিত

গর্ত

  1. কোড-গল্ফ ব্যাগ

    ইনপুট হিসাবে দুটি স্ট্রিং নিন।
    দ্বিতীয় স্ট্রিংয়ের কোনও অক্ষরের উপস্থিতি উপেক্ষা করার সময় প্রথম স্ট্রিংয়ের অক্ষর গণনা আউটপুট করুন।
    উদাহরণ: f("foobarbaz", "ao")=>5
  2. গল্ফ করার জন্য একটি প্রাক পাঠ্য

    ইনপুট হিসাবে দুটি স্ট্রিং নিন।
    প্রথম স্ট্রিংটি আউটপুট করুন, প্রতিটি লাইনের সাথে দ্বিতীয়টির সাথে উপসর্গ তৈরি করা হবে।
    উদাহরণ: f("foo\nbar\nbaz", "a")=>"a foo\na bar\na baz"
  3. ট্যাব বনাম স্পেসের যুদ্ধ

    ইনপুট হিসাবে একটি স্ট্রিং s, একটি সংখ্যা nএবং একটি বুলিয়ান b(আপনি চাইলেও নির্দিষ্ট) নিন।
    যদি bএটি সত্য sহয় তবে প্রতিটি ট্যাবে nফাঁকা জায়গায় রূপান্তরিত হয় ।
    অন্য, ট্যাবগুলিতে রূপান্তরিত sপ্রতিটি nস্পেস সহ আউটপুট করুন ।
    উদাহরণ: f("if (x) {\n\tdoStuff();\n}", 4, true)=> "if (x) {\n[sp][sp][sp][sp]doStuff();\n}"( [sp]অর্থ স্থান)
  4. গল্ফ স্তম্ভ

    স্ট্রিং s, একটি সংখ্যা nএবং অন্য নম্বরটি mইনপুট হিসাবে নিন। প্রতিটি কলামে লাইনের কলাম এবং অক্ষরে অক্ষরে
    আউটপুট । কলামগুলির মধ্যে একটি জায়গার প্যাডিংও রয়েছে। উদাহরণ: =>snm

    f("this is some placeholder text, foo bar baz...", 3, 5)

    this  aceho  foo 
    is so lder  bar b
    me pl text, az...
    
  5. বন্ধুত্বপূর্ণ চিঠি

    ইনপুট হিসাবে একটি স্ট্রিং sএবং একটি সংখ্যা নিন n। অক্ষরের
    সর্বাধিক সাধারণ গোষ্ঠীর আউটপুট । যদি টাই থাকে, তবে যে কোনও বা সমস্ত আউটপুট করুন। উদাহরণ: =>ns

    f("abcdeabcfghiabc", 3)"abc"
  6. প্রাতঃরাশের জন্য স্ক্যাম্বলড ডিমের অক্ষর

    ইনপুট হিসাবে একটি স্ট্রিং নিন।
    তার প্রথম এবং শেষ অক্ষর বাদে তার সমস্ত শব্দ স্ক্র্যাম্বলড (অক্ষরের ক্রম এলোমেলো করে) দিয়ে স্ট্রিং আউটপুট করুন।
    সরলতার জন্য, ধরে নিন যে ইনপুটটি "শব্দ" এর একটি তালিকা হবে, স্থান পৃথক করা (অর্থাত্ @$&_():;" foo bar, @$&_():;"এটি একটি "শব্দ" হিসাবে বিবেচিত)
    Example উদাহরণ: f("this is a sentence that will be scrambled")=>"tihs is a stcneene that wlil be sclamrbed"
  7. ASCIIfy

    ইনপুট হিসাবে একটি স্ট্রিং নিন।
    যদি স্ট্রিংটিতে কেবল সংখ্যা এবং ফাঁকা স্থান থাকে তবে তারপরে নম্বরগুলি তাদের নিজ নিজ ASCII অক্ষর (স্পেসগুলি সরিয়ে) দিয়ে প্রতিস্থাপন করুন।
    অন্যথায়, বিপরীতে (সংখ্যায় অক্ষর) করুন।
    উদাহরণ: f("ASCIIfy challenge")=> "65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
    উদাহরণ 2: f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")=>"ASCIIfy challenge"
  8. মিনি-মিনি-মার্কডাউন রূপান্তর

    ইনপুট হিসাবে একটি স্ট্রিং নিন।
    স্ট্যাক এক্সচেঞ্জের মন্তব্যে ব্যবহৃত স্ট্রিংটি মিনি-মার্কডাউন দিয়ে রূপান্তরিত হয়।
    এই একটি এমনকি ক্ষুদ্র-Er সংস্করণ: প্রতিবার আপনি কেবলমাত্র হ্যান্ডেল প্রয়োজন **bold**, *italics*এবং `code`
    আপনার মতো অবৈধ বাসা বাঁধতে হবে না **foo *bar** baz*। এছাড়াও ধরে নিন যে আপনি যখন একটি ডিলিমিটার ( *বা `) দেখেন তখন এর অর্থ সর্বদা বিন্যাস (অর্থাত্ te**st**ing=> te<b>st</b>ingএবং foo* bar *baz=> foo<i> bar </i>baz) হবে।
    উদাহরণ: f("**foo** *bar **baz*** `qux`")=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
  9. কেবল সেরা চরিত্রগুলি

    ইনপুট হিসাবে একটি স্ট্রিং s, সংখ্যা nএবং স্ট্রিং নিন r। প্রতিটি শব্দের th অক্ষর
    আউটপুট করুন । (0-ইনডেক্সড, শব্দগুলি স্পেস-বিভক্ত)। যদি শব্দের দৈর্ঘ্য কম , ব্যবহার যে শব্দ পরিবর্তে জন্য। উদাহরণ: =>ns
    nr
    f("this is a test sentence foo bar baz", 2, "-")"i--snorz"

স্কোরিং

আপনার স্কোরটি আপনার প্রোগ্রামগুলির চরিত্রের সংখ্যার যোগফল। প্রতিটি পুনরাবৃত্তি ভাষার জন্য, 110% দিয়ে গুণ করুন। উদাহরণস্বরূপ, আপনার যদি তিনটি রুবি সমাধান থাকে এবং আপনার সমস্ত সমাধানের মোট চরিত্রের সংখ্যা 1000 হয় তবে আপনার স্কোর 1000 * 1.1 * 1.1 = 1210 you

শুভকামনা!


1
চ্যালেঞ্জ 8 মার্কডাউনের সর্বাধিক সুনির্দিষ্ট নির্দিষ্ট দিকগুলির একটিতে স্পর্শ করে এবং সত্যিকারের পক্ষে এটি করা খুব কঠিন hard অস্পষ্টতাগুলি কীভাবে পরিচালনা করতে হবে এবং একটি ভাল পরীক্ষার স্যুট এটির একটি স্পষ্ট ব্যাখ্যা প্রয়োজন। দেখুন Emphasis.text mdtest স্যুট থেকে।
পিটার টেলর

@ পিটারটেলর ঠিক আছে, _যেহেতু আমি এটি অন্তর্ভুক্ত না করার জন্য নির্দিষ্ট করে রেখেছি তাতে কিছু আসে যায় না। আমি অন্য কিছু স্পষ্ট করতে সম্পাদনা করেছি।
Doorknob

কি হবে **foo***bar**baz*?
পিটার টেলর

1
চ্যালেঞ্জ 6 অভিন্ন এই এক
দানিরো

4
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ এটি অংশগুলির মধ্যে অপর্যাপ্ত মিথস্ক্রিয়া সহ একটি বহু-অংশ চ্যালেঞ্জ
পিপ্পি

উত্তর:


12

স্কোর: 382 * 1.1 2 = 462

ভাষা পরিবর্তন করার প্রবণতা রয়েছে।

1. এপিএল, 8 4

ধন্যবাদ @ মারিনাস 4 টি দাড়ি কামানোর জন্য।

f←⍴~

বাম এবং ডান আর্গুমেন্ট হিসাবে স্ট্রিং দিয়ে ডাকা, যেমন।

      'foobarbaz' f 'ao'
5

2. রুবি, 35 31

ধন্যবাদ 4 ডুরকনোবফসন চার কামার শেভ করার জন্য

f=->s,r{s.gsub(/(?<=^)/,r+' ')}

3. পাইথন, 48

f=lambda s,n,b:s.replace(*['\t',' '*n][::2*b-1])

৪. গল্ফস্ক্রিপ্ট, ২০

{@//zip{' '*}%n*}:f;

ধরে নিই যে আর্গুমেন্টগুলি স্ট্যাকের মধ্যে রয়েছে। অনলাইন পরীক্ষা

5. জে, 50

f=:({~[:(i.>./)+/"1@=@(}.~0-1{$))@|:@([$~],1+[:$[)

ডান হিসাবে বাম আর্গুমেন্ট এবং সংখ্যা হিসাবে ডাকা হয়।

   'abcdeabcfghiabc' f 3
abc

6. রুবি, 61

f=->s{s.gsub(/(?<!^| )[^ ]+(?!$| )/){[*$&.chars].shuffle*''}}

7. গল্ফস্ক্রিপ্ট, 39 35 34

{[.10,' '*-{{}/]' '*}{~]''+}if}:f;

আবার, ধরে নিই তর্কটি স্ট্যাকের মধ্যে রয়েছে। অনলাইন পরীক্ষা

8. পার্ল, 98

sub f{$_=@_[0];s!\*\*(.+?)\*\*!<b>$1</b>!g;s!\*(.+?)\*!<i>$1</i>!g;s!`(.+?)`!<code>$1</code>!g;$_}

9. হাস্কেল, 36

f s n r=[(x++cycle r)!!n|x<-words s]

গ্রেট! আপনি f=->s,r{...}কোনও ফাংশনের পরিবর্তে প্রক ( ) ব্যবহার করে রুবিতে কিছু অক্ষর সংরক্ষণ করতে পারেন । যদিও এটি সম্পূর্ণ না হওয়া পর্যন্ত আমি উর্ধ্বতনকে অস্বীকার করব, যদিও: পি
ডুরকনব

@ ডুরকনোবফসন আহ, ধন্যবাদ রুবির সাথে
তেমন

হুরয়ে, আপনি প্রথমটি শেষ করেছেন :-D +1
ডোরকনব

আমি এই ধারণাটি পেয়েছি যে সমস্ত ফাংশনগুলির মধ্যে একটি স্ট্রিং ফিরে আসার কথা, তাই 4 নম্বর জন্য আমি মনে করি আপনাকে আরও একটি অক্ষর ব্যবহার করতে হবে।
পিটার টেলর

@PeterTaylor সংশোধন :)
উদ্বায়ীতামূলক

4

পাইথন - 697 × 1.1 9 ≈ 1644

জি, আমি নিশ্চিত ল্যাম্বডাসকে ভালবাসি।

দ্রষ্টব্য : 3 এবং 5 নির্লজ্জভাবে ভোলাটিলিটির উত্তরটি থেকে অনুলিপি করা হয়েছিল , কারণ এর চেয়ে ভাল বিকল্প আমি খুঁজে পাইনি। এছাড়াও, এটি কেবল মজাদার জন্য করা হয়েছিল ।

f=lambda a,b:sum([x not in b for x in a])        # 1, 41 chars
f=lambda a,b:b+' '+a.replace('\n','\n'+b+' ')    # 2, 43 chars
f=lambda s,n,b:s.replace(*['\t',' '*n][::b*2-1]) # 3, 47 chars
f=lambda s,n,m:'\n'.join([' '.join([s[x:x+m]for x in range(y*m,len(s),m*n)])for y in range(n)])
                                                 # 4, 94 chars
f=lambda s,n:max([s[x:x+n]for x in range(len(s)+1-n)],key=s.count)
                                                 # 5, 66 chars
import random;f=lambda s:' '.join([''.join(sorted(y,key=lambda*x:random.random()))for y in s.split()])
                                                 # 6, 102 chars
f=lambda s:s.replace(' ','').isdigit()and ''.join(map(chr,map(int,s.split())))or ' '.join(map(str,map(ord,s)))
                                                 # 7, 110 chars
import re;f=lambda s:re.sub('`(.*?)`','<code>\\1</code>',re.sub(r'\*(.*?)\*','<i>\\1</i>',re.sub(r'\*\*(.*?)\*\*','<b>\\1</b>',s)))
                                                 # 8, 128 chars
f=lambda s,n,r:''.join([len(x)>n and x[n]or r for x in s.split()])
                                                 # 9, 66 chars

সম্পাদনা : টিপসের জন্য উদ্বোধনকে ধন্যবাদ।


আপনি তাদের বেশিরভাগের জন্য জেনারেটর এক্সপ্রেশন ব্যবহার করতে পারেন, যা আপনাকে একগুচ্ছ অক্ষর সাশ্রয় করবে। এছাড়াও, ১ এর জন্য ব্যবহার করার দরকার নেই int, যেহেতু বুলিয়ানগুলি সেগুলির একটি সাবক্লাস, এবং for এর জন্য all([...])সংক্ষিপ্ত করা যেতে পারেx.replace(' ','').isdigit()
অস্থায়ীতা

দ্বিতীয় উত্তরটি প্রথম লাইনের উপসর্গ করবে না a
দানিরো

1

স্কোর 513 * 1.1 5 = 826 

একই ভাষার জরিমানা দিয়ে বেশ মারধর করেছে। রুবিতে এর বেশিরভাগ সমাধান করেছিলাম যত তাড়াতাড়ি সম্ভব এগুলি শেষ করতে। পরে কিছু ভাষা পরিবর্তন করতে পারে। প্রতিটি উত্তরের উপর একটি ছোট পুনরুদ্ধার / ব্যাখ্যা যুক্ত করা হয়েছে।

1: পাইথন (46)

f=lambda a,b:len([x for x in a if not x in b])

প্রথম, রুবি ২.০ (30) এর সংক্ষিপ্ত উত্তর যা আরও বেশি পেনাল্টি এবং উচ্চতর সামগ্রিক স্কোর দেয়:

p (gets.chars-gets.chars).size

2: রুবি 1.9+ (37)

উপসর্গযুক্ত প্রতিটি লাইন এর সাথে sপ্রত্যাবর্তন করে t:

f=->s,t{s.split(?\n).map{|x|t+x}*?\n}

3: রুবি 1.9+ (48)

রিটার্নস sট্যাব সঙ্গে দ্বারা প্রতিস্থাপিত n, স্পেস বা তদ্বিপরীত উপর নির্ভর করে b:

f=->s,n,b{r=[" "*n,?\t];b||r.reverse!;s.gsub *r}

4: রুবি 1.9+ (95)

কেউ আমাকে গুলি করে।

f=->s,n,m{[*s.chars.each_slice(m).map{|w|w*''}.each_slice(s.size/m/n)].transpose.map{|w|w*' '}}

5: রুবি 1.9+ (58)

nঅক্ষরের সর্বাধিক প্রচলিত রান এখানে ফেরত দেয় s:

f=->s,n{(a=s.chars.each_slice(n)).max_by{|v|a.count v}*''}

6: জে (47)

কোনওভাবে পাঠ্যকে স্ক্র্যাম্বল করে; মেরিনাস থেকে নির্লজ্জভাবে ভারব্যাটিয়াম চুরি :

''[1!:2&4('\w(\w+)\w';,1)({~?~@#)rxapply 1!:1[3

7: রুবি (57 + 1)

ASCIIified বা ডি-এএসসিআইআইফাইড প্রিন্ট ইনপুট। -pসুইচ দিয়ে চালান ।

~/\d/?gsub(/\d+\s*/){$&.to_i.chr}:gsub(/./){"#{$&.ord} "}

8: শেড (87)

মুদ্রণ ইনপুট (মিনি) মার্কডাউন থেকে এইচটিএমএল রূপান্তরিত হয়েছে:

s:\*\*([^*]+)\*\*:<b>\1</b>:g;
s:\*([^*]+)\*:<i>\1</i>:g;
s:`([^`]+)`:<code>\1</code>:g

9 রুবি 1.9+ (37)

এর nমধ্যে প্রতিটি প্রথম শব্দের তম অক্ষরের একটি স্ট্রিং প্রদান করে s, বা r:

f=->s,n,r{s.split.map{|w|w[n]||r}*''}

আপনার 8 আউটপুট <b>test** **test2</b>জন্য না **test** **test2**?
ডুরকনব

@ ডুরকনোবফস হ্যাঁ এটি হবে;) স্থির (সেডের অ-লোভী পুনরাবৃত্তি নেই)।
দানিরো

এটা কি দিতে হবে **foo *bar* baz**?
অস্থিরতা

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

1 ম রুবি কোড -অপারেটরের জন্য গণকের সাথে কাজ করে?
শিভা

1

কাজ চলছে

1. জাভা - 66

int f(String s,String b){for(char c:b)s=s.replace(b,"");return s;}

2. জাভা - 64

String f(String i,String r){return i.replaceAll("(?m)^",r+" ");}

3. পাইথন - 58

def f(s,n,b):t=" "*n;a=t,'\t';print s.replace(a[b],a[b^1])

4. পাইথন - 84

def f(s,n,m):
 a=['']*n;c=0
 while s:a[c%n]+=s[:m]+" ";s=s[m:];c+=1
 for i in a:print i

5।

6।

7. বেফুঞ্জ 98 - 9

&,5j3.~@#

8।

9।


প্রথম গর্তে এটি হওয়া উচিত for(char c:b.toCharArray())এবং replace(c+"","");এবং return s.length();(বা এর মতো কিছু) এটি কাজ করা উচিত।
বববেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.