কাস্টম বর্ণমালা অনুসারে বাছাই করুন


9

চ্যালেঞ্জটি হ'ল এমন একটি প্রোগ্রাম তৈরি করা যা শব্দের একটি তালিকা বাছাই করে কেবল শব্দগুলি একটি এলোমেলো বর্ণমালা অনুসারে হওয়া দরকার।

আপনার প্রোগ্রামটি কমা-বিচ্ছিন্ন শব্দের একটি স্ট্রিং এবং একটি নতুন বর্ণমালা গ্রহণ করবে।
আপনার প্রোগ্রামটি প্রতিটি শব্দকে একইভাবে নতুন সাজানো ক্রমে আউটপুট দেবে।

উদাহরণ:

ইনপুট:

home,oval,cat,egg,network,green bcdfghijklmnpqrstvwxzaeiouy

আউটপুট:

cat,green,home,network,egg,oval

এটা একটা সুতরাং, বিজয়ী হ'ল সংক্ষিপ্ততম প্রোগ্রামের ব্যক্তি।

এটি আমার প্রথম চ্যালেঞ্জ তাই প্রশ্ন / চ্যালেঞ্জের যে কোনও উন্নতি প্রশংসিত হয়।


1. আমি আপনার উদাহরণ থেকে গ্রহণ করি যে বর্ণমালা শব্দ দ্বারা একটি স্থান দ্বারা পৃথক করা হবে। এটা কি ঠিক? ২) শব্দগুলি কি সর্বদা ছোট হাতের অক্ষরে থাকবে?
ডেনিস

@ ডেনিস উভয়ের পক্ষে হ্যাঁ
ম্যাথ্যাটিক

1
এটি একটি ভুল। আমি এটি সম্পাদনা করব।
ম্যাথ্যাটিক

+1 ঠিক আছে প্রশ্ন (প্রথমবারের জন্য ;-))। তবে আমি শিরোনামের প্রাসঙ্গিকতাটি দেখছি না - সম্ভবত আপনি এটির নাম পরিবর্তন করতে পারেন Sort by custom alphabetবা আরও কিছু সৃজনশীল?
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা হ্যাঁ এটি আরও ভাল হতে পারে। কথা গুলো নিয়ে একটু খেলতে চেষ্টা করলাম। আমি ascii এবং utf-8 একটি রেফারেন্স এবং এটি যা জিজ্ঞাসা করতে চাই। তবে সে ব্যর্থ হয়েছিল। আমি আপনার পরামর্শে এটি পরিবর্তন করব যা ভাল ছিল।
Mathetic

উত্তর:


2

সিজেম, 26 19 17 বাইট

rr:A;',/{Af#}$',*

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

পরীক্ষা ক্ষেত্রে

$ cjam sort.cjam <<< 'home,oval,cat,egg,network,green bcdfghjklmnpqrstvwxzaeiouy'
cat,green,home,network,egg,oval

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

rr                    " Read two whitespace-separated tokens from STDIN. ";
  :A;                 " Save the second token (the alphabet) in A.       ";
     ',/              " Split the remaining token at commas.             ";
        {Af#}$        " Sort by the chunks' characters' indexes in A.    ";
               ',*    " Join, separating by commas.                      ";

ঠিক আছে, যেহেতু আপনিও একই পন্থাটি ব্যবহার করেছেন, তাই এখন আমার আসলে কোনও অর্থ হয় না।
অপ্টিমাইজার 21

@ অপ্টিমাইজার: আপনি আমাকে আট সেকেন্ডের মধ্যে মারলেন beat যদি আপনি আপনার উত্তরটি মুছে ফেলেন তবে আমি আমার পিছনে ফিরে যাব।
ডেনিস

না, আমি এটি একটি তুচ্ছ এবং খুব obv পরিবর্তন মনে করি। আমার উত্তরটি প্রথম স্থানে পোস্ট করার আগে আপনার আপডেটগুলি লক্ষ্য করা উচিত :)
অপটিমাইজার

4

বাশ + কোর্টিলস, 37 বাইট

tr ,$2 \\na-z<<<$1|sort|tr \\na-z ,$2

আউটপুট:

$ ./alphasort.sh home,oval,cat,egg,network,green bcdfghijklmnpqrstvwxyzaeiouy
cat,green,home,network,egg,oval, $ 

1
কমাগুলির সাথে ডিল করার দুর্দান্ত উপায়!
ডেনিস

2

পাইথ , 19 টি অক্ষর

j\,o_mx_zdNchczd\,

টেস্ট:

$ pyth -c "j\,o_mx_zdNchczd\," <<< 'home,oval,cat,egg,network,green bcdfghjklmnpqrstvwxzaeiouy'
cat,green,home,network,egg,oval

ব্যাখ্যা:

                            Implicit: d=" "
                            Implicit: z=input()
j\,                         ",".join(
   o                                 order_by(lambda N:
    _                                                  rev(
     m                                                     map(lambda d:
      x_zd                                                              rev(z).index(d),
      N                                                                 N),
    chczd\,                                            z.split(" "[0].split(",")

মূলত, এটি খণ্ডগুলি বাছাই করে, স্ট্রিংয়ের অক্ষরগুলির সূচকের তালিকার একটি কী সহ, সেগুলি কমাতে যোগ দেয়। বিপরীত ব্যবসাগুলি আবার স্ট্রিংকে বিভক্ত করার চেয়ে ছোট।


18 বাইট:j\,_omx_zdNchczd\,
ডেনিস

@ ডেনিস খুব চালাক, আপনাকে ধন্যবাদ
isaacg

1

রুবি, 53 50 বাইট

a,b=$*
$><<a.split(?,).sort_by{|w|w.tr b,'a-z'}*?,

আমি বাছাইয়ের আগে trকাস্টম বর্ণমালা প্রতিস্থাপন করতে রুবি ব্যবহার করছি a-z। ইনপুট হ'ল কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে।


আপনি যদি $><<স্ক্রিনে মুদ্রণ করতে ব্যবহার করেন তবে আপনি একটি বাইট শেভ করতে পারেন (আপনি তখন স্থানটি সরাতে পারেন)। আপনি এর $*মতো ভেরিয়েবলগুলিকে বরাদ্দ করে আরও দুটি বাইট শেভ করতে পারেন: a,b=$*এবং এর #sort_byপরিবর্তে ব্যবহার করে #sort_by!
ব্রিটিশটি

ধন্যবাদ ব্রিটিশ আমি ভেবেছিলাম আমার প্রয়োজন হবে *$*(যা আমার প্রথম ছিল এবং যা একই দৈর্ঘ্য)।
মার্টিন ইন্ডার

0

পাইথন, 131

w,a=input().split()
print(",".join(sorted(w.split(","),key=lambda s:"".join(["abcdefghijklmnopqrstuvwxyz"[a.find(c)]for c in s]))))

উন্নতির জন্য প্রচুর জায়গা থাকা উচিত।


বাছাই ফাংশন হিসাবে আপনাকে কোনও কী ব্যবহার করতে হবে না - কেবল a.find(c)সরাসরি তালিকা ব্যবহার করুন ।
isaacg

0

জাভাস্ক্রিপ্ট (E6) 102 119

আইও পপআপ ব্যবহার করে প্রম্পটে বর্ণমালার ' ' বর্ণমালার ভিত্তিতে ম্যাপিং ফাংশন 'এম' দিয়ে বাছাই করুন
(প্রম্পট + সতর্কতা)

x=prompt().split(/[ ,]/),
a=x.pop(),
M=w=>[10+a.search(c)for(c of w)]+'',
alert(x.sort((a,b)=>M(a)>M(b)))

1 স্ট্রিং প্যারামিটার সহ একটি (পরীক্ষামূলক) ফাংশন হিসাবে, একটি স্ট্রিং অ্যারে (92) ফেরত দেয়

F=x=>(
  M=w=>[10+a.search(c)for(c of w)],
  x=x.split(/[ ,]/),
  a=x.pop(),
  x.sort((a,b)=>M(a)>M(b))
)

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

F('home,oval,cat,egg,network,green zyxwvtsrqpnmlkjhgfdcbaeiou')

আউটপুট

["network", "home", "green", "cat", "egg", "oval"]

1
-4 যদি আপনি আপনার সাজানোর ক্রিয়াটি প্রতিস্থাপন করেন(M(a)>M(b))-(M(a)<M(b))
ডকম্যাক্স

@ ডকম্যাক্স খুব সুন্দর এটা পরিনত হয় যে এটা যে চেয়ে আরও সহজ এর ( stackoverflow.com/a/7232172/3640407 )
edc65

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

এছাড়াও আমি এখনই কেবল আমার ফোনে আছি তবে এম এত জটিল কেন? এটি ব্যবহার করতে কাজ করবে না M=w=>[...a].indexOf(w)? দুর্ভাগ্যক্রমে আমি এখনই এটি পরীক্ষা করতে পারছি না।
ইনগো বার্ক

@ ইনগোবার্ক ডাব্লু একটি শব্দ, একটি চরিত্র নয়। এম এর প্রতিটি অক্ষরকে এর সাথে এর অবস্থানের সাথে প্রতিস্থাপন করে।
edc65

0

Clojure, 115 বাইট

#(apply str(butlast(interleave(sort-by(fn[w](apply str(map(zipmap(sort %2)%2)w)))(re-seq #"[a-z]+"%))(repeat \,))))

বাহ, এটি দিয়ে খুব ভাল শুরু হয়েছিল (sort-by(fn[w](mapv(zipmap(sort %2)%2)w)))তবে আমি বুঝতে পেরেছিলাম যে vecস্ট্রিংয়ের মতো একইভাবে সাজানো হয় না, এবং সেই কমাগুলি ইন্টারলেভ করাও উল্লেখযোগ্য পরিমাণে কোড নেয়।

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