PronunciationSort ™


24

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

উচ্চারণ

সংখ্যার উচ্চারণের সরকারী নিয়মগুলি (এই চ্যালেঞ্জে) হ'ল অঙ্কগুলি একে একে উচ্চারণ করা হয় এবং ফলস্বরূপ স্ট্রিংটি অভিধানিক ক্রমে সাজানো হয়। উদাহরণ হিসাবে, এর অর্থ হল যে নম্বরটি 845উচ্চারণ করা হয়েছে "eight four five", এবং সেই অনুসারে বাছাই করা উচিত।

Gণাত্মক সংখ্যা

নেতিবাচক সংখ্যাগুলি শব্দটি প্রেরণের মাধ্যমে উচ্চারণ করা হয় "minus"। সুতরাং, -23হিসাবে উচ্চারণ করা হয় "minus two three"। নোট করুন যে এর ফলে আউটপুটটির মাঝামাঝি সময়ে নেগেটিভ সংখ্যাগুলি শেষ হতে পারে, ডানদিকে 4(চার) এবং 9(নয়) দিয়ে শুরু হওয়া সংখ্যার মধ্যে ।

গাইড হিসাবে, উচ্চারণ শর্ট for এর শব্দের সরকারী ক্রমটি হ'ল:

  • আট
  • পাঁচ
  • চার
  • ঋণচিহ্ন
  • নয়
  • এক
  • সাত
  • ছয়
  • তিন
  • দুই
  • শূন্য

এটাই,

8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0

ইনপুট

সর্বাধিক 100 টি উপাদান থাকা ব্যাপ্তি এর পূর্ণসংখ্যার একটি তালিকা । স্ট্রিংগুলির তালিকা হিসাবে ইনপুট অনুমোদিত নয়। যদি আপনার ভাষা তালিকা হিসাবে ইনপুট সমর্থন করে না, তবে পৃথক পূর্ণসংখ্যার হিসাবে ইনপুট দেওয়া অনুমোদিত।[999,999]

ইনপুটটিতে কোনও অবৈধ সংখ্যা বা 0 দিয়ে শুরু হওয়া কোনও সংখ্যা থাকবে না (কেবল 0 নম্বর বাদে)। ইনপুটটি সাধারণত সাজানো হবে না, এটি কোনও ক্রমে দেওয়া যেতে পারে।

আউটপুট

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

উদাহরণ

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

[1, 2, 3] -> (['one', 'two', 'three']) -> [1, 3, 2]
[-1, 0, 1, 2] -> (['minus one', 'zero', 'one', 'two']) -> [-1, 1, 2, 0]
[-100, 45, 96] -> (['minus one zero zero', 'four five', 'nine six']) -> [45, -100, 96]
[11, 12, 13, 134, 135] -> (['one one', 'one two', 'one three', 'one three four', 'one three five']) -> [11, 13, 135, 134, 12]

আপনার ফলাফল যাচাই করার জন্য একটি স্ক্রিপ্টও রয়েছে


5
"এক" (উচ্চারণে "জিতেছে") দু'জনের পরে এবং শূন্যের আগে আসে না কেন?
বেন মিলার - মনিকা পুনরায় ইনস্টল করুন

3
@ বেনমিলার আমি মনে করতে পারি না আপনি যদি তিনিই স্যান্ডবক্সে মন্তব্য করেছিলেন তবে এই মন্তব্যটি আমাকে দেজা ভিউ দিয়েছে। এখানে এর উত্তর দেওয়ার জন্য, আমি এটি নিয়ে চিন্তিত হয়েছি, তবে আমি বানান নিয়ে আলোচনা এড়াতে বানানের সাথে গিয়েছিলাম (উদাঃ "দুটি" বনাম "খুব", "জিতেছেন" বা "ওয়ান")
ম্যাক্সব

17
সুতরাং এটি আসলে "
সর্বনোককরণ

3
অকর্মা। আমি আশা করছিলাম যে তারা উচ্চারণ করা কতটা কঠিন তাদের অনুসারে বাছাই করা হবে ...
এনএইচ।

2
এই চ্যালেঞ্জটি আসলেই নতুন নামকরণ করা উচিত, কারণ এখানে বাছাইয়ের সাথে উচ্চারণের সাথে কার্যত কিছুই করার নেই । এটা তোলে অত্যন্ত জটিল হলে উচ্চারণ ভিত্তিক ছিল হবে (যেমন, চার সামনে আসতে পারে পাঁচটি যদি আপনি সাজানোর monophthong ⟨ɔː⟩ আগে সন্ধিস্বরধ্বনি ⟨aɪ⟩ কিন্তু পাঁচটি সামনে চার যদি আপনি সাজানোর ⟨a⟩ ণ আগে একটি ডিরাইভড -রাইভারড ⟨ɔ⟩ - আমার জ্ঞান অনুসারে, উচ্চারণের জন্য কোনও প্রতিষ্ঠিত বাছাইয়ের আদেশ নেই, আইপিএ বা অন্য কোনও স্কিমে নেই)।
জানুস বাহস জ্যাকেট

উত্তর:


8

05 এ বি 1 ই (উত্তরাধিকার) , 15 বাইট

Σε•Koéa₃•'-3ǝsk

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

ব্যাখ্যা

Σ                 # sort by
 ε                # apply to each
             sk   # index of the element in
  •Koéa₃•         # "85409176320"
         '-3ǝ     # with "-" inserted at index 3

সংক্ষিপ্ত পূর্ণসংখ্যার মধ্যে কোনও ত্রুটি রয়েছে বলে মনে হচ্ছে •ĆU‘•.. এটি যে কোনও কারণেই ম্যাপিং / বাছাইয়ের সময় একটি নতুন লাইন যুক্ত করে। Σ•ĆU‘•"54-ÿ"sSkআমি যে 15 টি বাইট বিকল্প নিয়ে কাজ করছিলাম তা যদি হতেই পারত, যদি এটি সেই অদ্ভুত বাগের জন্য না হয় .. আমি যদি •ĆU‘•9176320
আক্ষরিকরূপে

1
@ কেভিন ক্রুজসেন: এটি অদ্ভুত is আপনার …54-ì
বয়স

@ কেভিন ক্রুজসেন: আপনি Σ•RT‹•Á…54-ìsSk15
এমাগনা

•t∍ýJ•'-ìÁÁএছাড়াও কাজ করবে
এমিগিনা


8

জেলি ,  15  13 বাইট

ṾV€ị“Þ⁽3Z6»µÞ

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

একটি পূর্ণসংখ্যার লিঙ্ক পূর্ণসংখ্যার একটি তালিকা গ্রহণ করে যা পূর্ণসংখ্যার একটি তালিকা দেয়।

কিভাবে?

-ম্যাজিক স্ট্রিং "মুর্গিয়ন লিক্স" এর 1-ভিত্তিক এবং মডুলার সূচকগুলিতে অক্ষরগুলি ব্যবহার করে স্ট্রিংগুলিতে রূপান্তরিত পূর্ণসংখ্যার অঙ্কের সংখ্যাসূচক মানগুলির (যেখানে -1-এর একটি "অঙ্ক" রয়েছে) অনুসারে বাছাই করে।

বাছাই কার্যকরভাবে বর্ণানুক্রমিক যেখানে কোনও স্থানকে কোনও বর্ণের চেয়ে কম মনে করা হয়।

সংক্ষেপে ব্যবহৃত জেলির অভিধানগুলি পরিদর্শন করে ম্যাজিক স্ট্রিং "মুর্গিয়ন লিক্স" পাওয়া গেছে। 11 টি অক্ষরের কোনও শব্দ নেই যা প্রয়োজনীয়তাগুলি পূরণ করে (এবং এর চেয়ে আরও কোনও কিছুই হ'ল ডি-সদৃশ হওয়ার পরে)। যেহেতু একটি স্পেস অক্ষরের আগে সাজানো থাকে তার পরের স্পষ্ট পছন্দটি হ'ল দৈর্ঘ্যের একটি শব্দ এবং তার পরে স্পেসের পরে তিনটি দৈর্ঘ্যের শব্দ থাকে। "মার্গেইন" এবং "লিক্স" হ'ল একমাত্র সন্তোষজনক সংমিশ্রণ, যদিও কোনও স্থান ছাড়াই অন্যরাও সম্ভব হতে পারে (উদাঃ “£Py:ƥ»"মার্জোনালিক্স" যা একই বাইট-কাউন্টের জন্য কাজ করে)

ṾV€ị“Þ⁽3Z6»µÞ - Link: list of integers
            Þ - sort by:
           µ  -   the monadic link: -- i.e. do this for each integer, then sort by that
Ṿ             -     unevaluate  (e.g. -803 -> ['-','8','0','3'])
 V€           -     evaluate each as Jelly code  (e.g. ['-','8','0','3'] -> [-1,8,0,3])
    “Þ⁽3Z6»   -     "murgeon lix" (compression of words in Jelly's dictionary plus a space)
   ị          -     index into (1-indexed & modular) (e.g. [-1,8,0,3] -> "i xr")

পূর্ববর্তী @ 15 বাইট :

ṾV€ị“¡Zo⁶’Œ?¤µÞ

এখানে “¡Zo⁶’Œ?¤প্রাকৃতিক সংখ্যার প্রথম অনুক্রমের সন্ধান পাওয়া যায় যা 21,340,635 সূচকটিতে উপস্থিত থাকে যখন সংখ্যার সমস্ত অনুমানিক শব্দভাণ্ডারে বাছাই করা হয় - যা [6,10,9,3,2,8,7,1,5,4,11]। ( “¡Zo⁶’21340635 এর বেস 250 উপস্থাপনা, যখন Œ?গণনা করে এবং ¤এই নির্দেশাবলীকে একসাথে গোষ্ঠী করে)


এমনকি ব্যাখ্যা সহ, আমি খুব চালাক বোধ করি না। অসাধারণ সমাধান!
সর্বোচ্চ

সংক্ষিপ্ত সংস্করণ সম্ভবত বুঝতে আরও সহজ!
জোনাথন অ্যালান

7

পার্ল 6 , 30 বাইট

*.sort:{TR/0..9-/a5982176043/}

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

জিবি এর রুবি সমাধানের বন্দর Port

আসল 35 বাইট সংস্করণ

*.sort: (~*).uninames».&{S/\w*.//}

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

প্রতিটি সংখ্যা একটি স্ট্রিংয়ে রূপান্তর করুন, প্রতিটি চরিত্রের ইউনিকোড নাম পান, প্রথম শব্দটি ("ডিজিট" বা "হাইফেন") স্ট্রিপ করুন, তারপরে বাছাই করুন।


6

দেখে মনে হচ্ছে আপনি +''স্ট্রিংগুলির অ্যারে হিসাবে ইনপুট নিচ্ছেন এমনটি দেখে আপনি মুছে ফেলতে পারেন ।
শেগি

@ শেগি আমি আর স্ট্রিং নিচ্ছি না, কারণ আমি নিশ্চিত না যে এখানে এটির অনুমতি রয়েছে কিনা।
আর্নল্ড

আহ ... ঠিক বলেছেন। এটি আমার সমাধানে কয়েকটা বাইট যুক্ত করবে।
শেগি


6

পাইথন 3, 68 বাইট 67 বাইট 64 বাইট

lambda x:sorted(x,key=lambda y:[*map('54-9176320'.find,str(y))])

sortedকীটির জন্য একটি বেনাম ল্যাম্বদা সহ অন্তর্নির্মিত ফাংশন ব্যবহার করে। সাজানো ক্রমকে হার্ড-কোড করুন এবং ইনপুট তালিকার প্রতিটি মানের প্রতিটি অঙ্ককে সাজানোর ক্রম তালিকার অবস্থানের সাথে তুলনা করুন।

সম্পাদনা করুন: প্যারামিটারটি পাওয়া না গেলে ফিরে আসার 8সুবিধা নিতে বাছাই করা তালিকা থেকে সরিয়ে 1 বাইট সংরক্ষণ করা হয়েছে । ম্যাক্সবকে ধন্যবাদstr.find-1

সম্পাদনা 2: কনস্ট্রাক্টরের listপরিবর্তে আক্ষরিক মধ্যে তারকাযুক্ত আনপ্যাকিং সিনট্যাক্স ব্যবহার করে 3 বাইট সংরক্ষিতlist

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


1
আপনি কি স্ট্রিংয়ের প্রথম 8 টি সরাতে পারবেন? পাইথন -1 ফেরত দেওয়ার সাথে সাথে যদি স্ট্রিংগুলি পাওয়া যায় না।
ম্যাক্সবি

@ ম্যাক্সব ভাল ক্যাচ সম্পাদনা করা হয়েছে।
মাইপিটলিয়ন


5

পাইথ, 17 16 বাইট

oxL"54-9176320"`

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

oxL"54-9176320"`NQ   Implicit: Q=eval(input())
                     Trailing N, Q inferred
o                Q   Order the elements of Q, as N, using...
               `N      Convert N to string
 xL                    Get the index of each character of that string...
   "54-9176320"        ... in the lookup ordering
                       (if character missing, returns -1, so 8 is still sorted before 5)

অভিধান স্ট্রিংয়ের সূচনা থেকে 8 বাদ দিয়ে @ngn এবং তাদের কে জবাবের জন্য 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে


4

জাপট, 19 বাইট

ñ_s ®n"54-9176320

চেষ্টা করে দেখুন


চমৎকার সমাধান! দুর্ভাগ্যক্রমে স্ট্রিংগুলির তালিকা হিসাবে ইনপুট অনুমোদিত নয়।
ম্যাক্সবি

আপনি অপব্যবহারের কিছু সঞ্চয় করতে পারেন S.n(s): ñ_s ®n"54-9176320(দৃশ্যত S.n(s)ঠিক হিসাবে একই s.b(S)জন্য Sছাড়া এটা ফেরৎ দৈর্ঘ্য 1 0স্থানে -1)
ETHproductions

সুন্দর কৌশল, @ ইথ প্রডাকশনস, ধন্যবাদ :) ভবিষ্যতের জন্য আমাকে সেটিকে মনে রাখতে হবে।
শেগি

3

রেটিনা 0.8.2 , 36 বাইট

T`-d`3:598217604
O`
T`3:598217604`-d

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার স্যুট অন্তর্ভুক্ত। ব্যাখ্যা:

T`-d`3:598217604

বিয়োগ চিহ্ন এবং অঙ্কগুলি :দশম অবস্থানের জন্য ব্যবহার করে উচ্চারণ ক্রমে তাদের অবস্থানটিতে অনুবাদ করুন ।

O`

উচ্চারণ ক্রমে বাছাই করুন।

T`3:598217604`-d

অর্ডারটি মূল বিয়োগ চিহ্ন এবং অঙ্কগুলিতে ফিরে অনুবাদ করুন।



3

আর , 58 বাইট

function(x)x[order(mapply(chartr,"-0-9","dkfjicbhgae",x))]

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

ইনপুট হল সংখ্যার একটি তালিকা যা স্পষ্টভাবে স্ট্রিং হিসাবে ব্যবহার করে রূপান্তরিত হয় chartrorderতারপরে মূল তালিকাটি বাছাই করা উচিত ক্রমটি পুনরুদ্ধার করতে লেক্সিগোগ্রাফিক অর্ডার ব্যবহার করে।


3

জাভা (জেডিকে 10) , 123 বাইট

l->l.sort(java.util.Comparator.comparing(n->{var r="";for(var c:(""+n).split(""))r+=11+"54-9176320".indexOf(c);return r;}))

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

এটি একটি নিষ্পাপ জাভা বাস্তবায়ন। অনেক গল্ফযোগ্য হওয়া উচিত।

ক্রেডিট


1
পরিবর্তন .chars-IntStream এবং .reduceএকটি নিয়মিত লুপ 2 বাইট সংরক্ষণ: n->{var r="";for(var c:(""+n).split(""))r+=10+"854-9176320".indexOf(c);return r;}। এছাড়াও, আরও একটি বাইট পরিবর্তন 10+"85করে সংরক্ষণ করা যায় 20+"5, যেহেতু .indexOfঅঙ্কের জন্য 8ফলাফলটি তখন -1 হয়। অনলাইনে এটি 123 বাইট ব্যবহার করে দেখুন
কেভিন ক্রুইজসেন

2

জাভাস্ক্রিপ্ট (স্পাইডারমনকি) , 87 73 বাইট

a=>a.sort((p,q,F=b=>[...""+b].map(x=>"54-9176320".search(x)))=>F(p)>F(q))

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

@ আর্নল্ডকে বলার জন্য ধন্যবাদ যে স্পাইডারমোনকি বাছাই স্থিতিশীল, সুতরাং ||-(F(q)>F(p))অংশটি অবশেষে বাদ দেওয়া যায়।



2

সি ++, 353 বাইট

এটি একটি কমেডি এন্ট্রির মতো, তবে আমি সময় নষ্ট করে লিখেছিলাম, তাই আমি এটি পোস্ট করতে পারছি না ... একটি ছাগল উপভোগ করুন, এবং কোনও স্পেস-সেভার মিস করেছেন কিনা তা আমাকে জানান!

#include<algorithm>
#include<iostream>
#include<iterator>
#include<numeric>
#include<string>
using namespace std;auto f(int i){auto s=to_string(i);for(auto&c:s)c='A'+"854-9176320"s.find(c);return s;}int main(){int a[100];auto b=begin(a);auto e=end(a);iota(b,e,-50);sort(b,e,[](int l,int r){return f(l)<f(r);});copy(b,e,ostream_iterator<int>(cout," "));}

আউটপুট:

8 5 4 48 45 44 49 41 47 46 43 42 40 -8 -5 -50 -4 -48 -45 -44 -49 -41 -47 -46 -43 -42 -40 -9 -1 -18 -15 - 14 -19 -11 -17 -16 -13 -12 -10 -7 -6 -3 -38 -35 -34 -39 -31 -37 -36 -33 -32 -30 -2 -28 -25 -24 - 29 -21 -27 -26 -26 -22 -20 9 1 18 15 14 19 11 17 16 13 12 10 7 6 3 38 35 34 39 31 37 36 33 32 30 2 28 25 24 29 21 21 26 23 22 20 0


আমি দেখতে পেয়েছি যে আপনি "এই
নম্বরে

1
আরে, আমি এই ভাষায় অপ্রয়োজনীয় সাদা জায়গার সামর্থ রাখি না! এটি করা মজার বিষয়, বাকী সময় হিসাবে দেখে কিছু জিনিস আমাকে অন্যের কোড খোলার মত রাগান্বিত করে, যারা স্পষ্টতই মনে করেন যে ভয়াবহ একঘেয়েমি প্রাচীর লেখা তাদেরকে আরও স্মার্ট দেখাবে, এবং / অথবা সক্রিয়ভাবে বেতনভুক্ত ডক করছে প্রতি টাইম নিউলাইন জন্য তারা টাইপ।
আন্ডারস্কোর_

1
হ্যালো! আপনার সমাধানটি 195 টি অক্ষরগুলিতে
সঙ্কুচিত করা হয়েছে

@ ম্যাক্সইখলাভকুল দুর্দান্ত, এটি চিন্তা করার জন্য ধন্যবাদ! আমি আরও কিছুটা পড়ার পরে বুঝতে পারি; দেখে মনে হচ্ছে যে অগত্যা আমার একটি সম্পূর্ণ সংকলনযোগ্য প্রোগ্রাম সরবরাহ করার দরকার নেই, তবে কেবলমাত্র সেই ফাংশন যা নির্দিষ্ট ইনপুট এবং আউটপুট প্রক্রিয়া করবে। ডি আহা!
আন্ডারস্কোর_২

2

গণিত, 68 বাইট

SortBy[If[# < 0,"m ",""]<>StringRiffle@IntegerName@IntegerDigits@#&]

ফাংশন। ইনপুট হিসাবে পূর্ণসংখ্যার একটি তালিকা নেয় এবং আউটপুট হিসাবে সাজানো তালিকাটি প্রদান করে returns শুধু সঙ্গে প্রতিটি সংখ্যা সংখ্যার আলাদা IntegerDigits, এর প্রতিটি অঙ্ক পরিবর্তন করে "zero", "one"ইত্যাদি সঙ্গে IntegerNameসঙ্গে একটি স্থান বিভাজিত স্ট্রিং মধ্যে তালিকা পরিবর্তন করে StringRiffle, একটি prepends "m "যদি সংখ্যা নেতিবাচক, এবং এই স্ট্রিং উপর ভিত্তি করে প্রকারের। প্রকৃতপক্ষে, আমি খুঁজে পেতে পারি এটিই সবচেয়ে সংক্ষিপ্ত পদ্ধতি ছিল, যেহেতু ম্যাথামেটিকাগুলি কেবল একই দৈর্ঘ্যের তালিকাগুলির জন্য অভিধানিক বাছাই ব্যবহার করে; সুতরাং, 854-9176320স্ট্রিং ফাংশনগুলি এত ব্যয়বহুল হওয়ায় আরও বাইট নেওয়া শেষের ভিত্তিতে একটি পদ্ধতির ।


সর্বদা গণিতকে বিল্টিনের সংমিশ্রণ করতে বিশ্বাস করুন। চতুর সমাধান!
সর্বোচ্চ

1

05 এ বি 1 ই , 15 14 বাইট

Σ•ĆU‘•…54-ìsSk

-1 বাইট @ এমিগানাকে ধন্যবাদ ।

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

ব্যাখ্যা:

Σ                 # Sort by:
 •ĆU‘•            #  Push the compressed integer 9176320
      54-        #  Push the string "54-"
          ì       #  Prepend this string before the integer: "54-9176320"
           s      #  Swap so the current number to sort is at the top of the stack
            S     #  Convert it to a list of characters
             k    #  Check for each its index in the string (resulting in -1 for '8')

খনি (অধ্যায় এই 05AB1E ডগা দেখুন ইপিএসে দক্ষিন কোরিয়ায় কিভাবে পূর্ণসংখ্যার সংকুচিত করার ) কেন বুঝতে •ĆU‘•হয় 9176320

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