বানানযুক্ত ক্রমিক সংখ্যাগুলি বাছাই করুন


17

দুটি বা তার বেশি সংখ্যার সমান দৈর্ঘ্যের দুটি বা তার বেশি বানানযুক্ত ক্রমিক সংখ্যার একটি তালিকা দেওয়া হয়েছে, যেমন

[[ "three" , "one"  , "four"  ],
 [ "one"   , "five" , "nine"  ],
 [ "two"   , "six"  , "five"  ],
 [ "three" , "five" , "eight" ]]

শব্দগুলি প্রতিনিধিত্ব করে এমন সংখ্যা অনুসারে তালিকাটি সাজান:

[[ "one"   , "five" , "nine"  ],
 [ "two"   , "six"  , "five"  ],
 [ "three" , "one"  , "four"  ],
 [ "three" , "five" , "eight" ]]

আপনার সংখ্যার কম বা উচ্চ বর্ণের বানানের প্রয়োজন হতে পারে তবে মিশ্র নয় case

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

[["three","one","four"],["one","five","nine"],["two","six","five"],["three","five","eight"]]
দেয়
[["one","five","nine"],["two","six","five"],["three","one","four"],["three","five","eight"]]

[["two","seven"],["one","eight"],["two","eight"],["one","eight"],["two","eight"],["four","five"]]
দেয়
[["one","eight"],["one","eight"],["two","seven"],["two","eight"],["two","eight"],["four","five"]]

[["one","four","one","four","two"],["one","three","five","six","two"],["three","seven","three","zero","nine"]]
দেয়
[["one","three","five","six","two"],["one","four","one","four","two"],["three","seven","three","zero","nine"]]

[["zero","six","one"],["eight","zero","three"],["three","nine","eight"],["eight","seven","four"],["nine","eight","nine"],["four","eight","four"]]
দেয়
[["zero","six","one"],["three","nine","eight"],["four","eight","four"],["eight","zero","three"],["eight","seven","four"],["nine","eight","nine"]]


নিশ্চিত না যে আমি এটি সঠিকভাবে পেয়েছি, তাই না ["three","one","four"] === 314?
নিট

@ নিট হ্যাঁ, এটা ঠিক।
অ্যাডম

@Nit তাদের সংখ্যার দ্বারা বানান করে। যেমন [314,159,265,358][159,265,314,358]
অ্যাডম

আমরা সংখ্যার একটি নির্দিষ্ট নির্বিচারে মূলধন ধরে নিতে পারি?
dylnan

@ অল্লানYou may require the numbers to be spelled in lower or upper, but not mixed, case.
সম্পূর্ণরূপে

উত্তর:


14

ঝাঁকুনি , 9 8 বাইট

Ö†€¨tfṡn

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

পুনরাবৃত্তির স্ট্যাক্স উত্তর দ্বারা অ্যালগরিদম "অনুপ্রাণিত" (আমি সন্ধানের স্ট্রিংটি খানিকটা বদলেছি), তাকে উজ্জীবিত করুন!

কৌশলটি প্রতিটি অক্ষরকে তার পজিশনে স্ট্রিংয়ে ম্যাপিং করছে tfsen(এই প্রোগ্রামের শেষে সংক্ষেপিত)। মুখের তালিকাগুলি 1-ভিত্তিক, এবং অনুপস্থিত আইটেম 0 ফিরে আসে, তাই আমরা এই ম্যাপিংটি পাই:

"one"        [0,5,4]
"two"        [1,0,0]
"three"      [1,0,0,4,4]
"four"       [2,0,0,0]
"five"       [2,0,0,4]
"six"        [3,0,0]
"seven"      [3,4,0,4,5]
"eight"      [4,0,0,0,1]
"nine"       [5,0,5,4]

আপনি দেখতে পাচ্ছেন, তালিকাগুলি নিখুঁতভাবে অর্ডার করা হয়েছে।


পরিষ্কার হওয়ার জন্য, এখানে তালিকার তুলনা কীভাবে হুসে কাজ করে (এবং অন্যান্য অনেক ভাষায়):

  1. দুটি তালিকার একটির তালিকা যদি খালি থাকে তবে সেটি আরও ছোট।
  2. যদি দুটি তালিকার প্রথম উপাদানগুলি পৃথক হয় তবে ছোট প্রথম উপাদানটির একটি ছোট তালিকা।
  3. অন্যথায়, উভয় তালিকা থেকে প্রথম উপাদানটি বাতিল করুন এবং পয়েন্ট 1 এ ফিরে যান।

যদি আমার ভুল না হয় তবে "ডাব্লু" কেও বাদ দেওয়া যেতে পারে, কারণ এটি "দুই" থেকে "তিন" এর তুলনা করা কেবল দরকারী, তবে আপনার ইতিমধ্যে "এইচ" রয়েছে। নিশ্চিত না যে এটি আপনাকে সহায়তা করে। বাস্তবে এখনও ছোট যে স্ট্যাক্স প্রোগ্রামে এই সত্যটি সংহত করা যায় তা আমি খুঁজে পাইনি।
পুনরাবৃত্তির

... এটি যদি কেবলমাত্র অক্ষর হত তবে এটি হতে পারে tfrsenতবে আমি অনুমান করছি যে এরকম শব্দ রয়েছে withএবং senএতে সংকোচনে সহায়তা হয়।
জনাথন অ্যালান

ধন্যবাদ ছেলেরা, আপনি আমাকে আরও ছোটতর স্ট্রিং সন্ধান করতে অনুপ্রাণিত করেছেন: ডি
লিও

সুতরাং, এটি প্রথম কমা পরে দশমিক বিন্দু দিয়ে কমাগুলি প্রতিস্থাপনের মতো?
স্ট্রবেরি

@ স্ট্রাবাবেরি আসলেই নয়, এর [1,0,0]চেয়ে ছোট হিসাবে বিবেচিত হয় [1,0,0,0](তবে এই প্রোগ্রামের জন্য এটি কোনও লাভ করবে না)
লিও

10

স্ট্যাক্স , 24 22 17 16 14 বাইট

▄Ωφ▐╧Kìg▄↕ñ▼!█

এটি চালান এবং এটি ডিবাগ করুন

এই প্রোগ্রামটি ইনপুটটির জন্য ছোট হাতের বানান সংখ্যার অ্যারে নেয়। আউটপুট যেমন নিউলাইন-পৃথক।

one five nine
two six five
three one four
three five eight

এই প্রোগ্রামটি নির্দিষ্ট রূপান্তরের অধীনে প্রাপ্ত ক্রমটি ব্যবহার করে ইনপুটগুলি বাছাই করে। প্রতিটি শব্দের প্রতিটি অক্ষর তার সূচকে স্ট্রিংয়ে প্রতিস্থাপন করা হয়"wo thif sen" । মূল অ্যারেগুলি এই ক্রম অনুসারে বাছাই করা হয়। তারপরে কোনও স্থানের সাথে যোগদানের পরে ফলাফলগুলি মুদ্রিত হয়।

স্পেসগুলি কোনও উদ্দেশ্য করে না, তবে প্রকৃতপক্ষে স্ট্রিং আক্ষরিক ক্ষেত্রে আরও বেশি সংক্ষেপণের অনুমতি দেয়।


স্ট্যাক্স কোন এনকোডিং ব্যবহার করে? এটি ইউটিএফ -8 এ 32 বাইট।
OldBunny2800

5
পরিবর্তিত সিপি 437, "বাইটস" হাইপারলিঙ্কের মতো ব্যাখ্যা করে।
পুনরাবৃত্তির

এই জাতীয় স্ট্রিং নিয়ে আসার কিছু মানক অ্যালগরিদম / পদ্ধতি আছে কি? ধারণার একটি নাম আছে?
Itai

@ ইটাই: মনে হচ্ছে এটি হবে তবে এটি কী তা আমি জানি না।
পুনরাবৃত্তির

6

জেলি , 12 বাইট

OḌ%⁽Т%147µÞ

একটি monadic লিঙ্ক।

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

কিভাবে?

অঙ্কগুলি অধ্যক্ষগুলিতে রূপান্তর করা এবং তারপরে বেস 10 থেকে তারপরে 4752 দ্বারা মডিউলগুলি নেওয়া 147 একটি ক্রমবর্ধমান আদেশ দেয়:

 zero            , one         , two         , three               , four
[122,101,114,111],[111,110,101],[116,119,111],[116,104,114,101,101],[102,111,117,114]
 133351          , 12301       , 12901       , 1276511             , 114384
 295             , 2797        , 3397        , 2975                , 336
 1               , 4           , 16          , 35                  , 42

 five            , six         , seven               , eight               , nine
[102,105,118,101],[115,105,120],[115,101,118,101,110],[101,105,103,104,116],[110,105,110,101]
 113781          , 12670       , 1263920             , 1126456             , 121701
 4485            , 3166        , 4640                , 232                 , 2901
 75              , 79          , 83                  , 85                  , 108

এটি এর পরে বাছাই করার জন্য একটি মূল ফাংশন হিসাবে ব্যবহার করা যেতে পারে:

OḌ%⁽Т%147µÞ - Link: list of lists of lists of characters
          µÞ - sort (Þ) by the mondadic chain to the left (µ):
O            -   ordinals of the characters
 Ḍ           -   convert from base 10
   ⁽Т       -   literal 4752
  %          -   modulo
      %147   -   modulo by 147

আপনি ঠিক সেখানে পেয়েছেন যে দুর্দান্ত কিছু মডুলো, আমি ধরে নিই যে শ্রমসাধ্য ছিল।
এরিক আউটগল্ফার

এই সব শ্রমসাধ্য নয় - যদিও আমি বাইনারিগুলিতে প্রথম দেখলাম।
জোনাথন অ্যালান

পছন্দ করুন, আপনি মডিউলগুলিকে জোর করে জোর করেছেন, না?
এরিক আউটগল্ফার

হ্যাঁ, তবে তাড়াতাড়ি ছিল।
জোনাথন অ্যালান

6

পাইথন , 62 বাইট

lambda m:sorted(m,key=lambda r:[int(s,36)%6779%531for s in r])

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

বিঃদ্রঃ:

lambda m:sorted(m,key=lambda r:[map("trfsen".find,s)for s in r])

পাইথন 2 এ কাজ করে (তবে 3 নয়) দুটি বাইট দ্বারা দীর্ঘ হয়।


1
আপনি কীভাবে ম্যাজিক নম্বর আবিষ্কার করলেন?
mbomb007

1
ফলাফলের চেয়ে কঠোরভাবে বৃদ্ধির জন্য কেবল নেস্টেড লুপ চেকিং। যদিও আমি সম্ভবত বাহ্যিক প্রদত্ত ভিতরের অঙ্কের দৈর্ঘ্যকে সীমাবদ্ধ করেছি।
জোনাথন অ্যালান

5

এপিএল (ডায়ালগ ক্লাসিক) , 12 বাইট

'nesft'∘⍒⌷¨⊂

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

এইভাবে আমি ডায়াডিকের জন্য একটি উপযুক্ত বাম যুক্তি খুঁজে পেয়েছি (আমি চেষ্টা করেছি এবং প্রথম দৈর্ঘ্য 6):

A←⊖a←↑'zero' 'one' 'two' 'three' 'four' 'five' 'six' 'seven' 'eight' 'nine'
{(aa[⍵⍒a;])∧Aa[⍵⍒A;]:⎕←⍵}¨,⊃∘.,/5⍴⊂∪∊a

3

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

*.sort:{('digit 'X~$_)».parse-names}

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

সম্প্রসারিত:

*\     # WhateverCode lambda (this is the parameter)
.sort:
{  # block with implicit parameter 「$_」
  (
    'digit ' X~ $_  # concatenate 'digit ' to each named digit
  )».parse-names    # call .parse-names on each
}

কোড ব্লকটি ফর্মটির একটি মান নেবে ("three","one","four")এবং এটি অনুবাদ করবে ("3","1","4")যা এমন মান যা .sortসহজেই ব্যবহার করতে পারে।


3

এপিএল (ডায়ালগ) , 38 বাইট

{⍵[⍋(531∘⊥⍤1)(531|6779|369+⎕A⍳⊢)¨↑⍵]}

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

জোনাথন অ্যালানের দুর্দান্ত সমাধানের ভিত্তিতে ।


1
@ জোনাথন অ্যালান আমি প্রাথমিক পরিবর্তনকালীন সময়ে একটি ক্রেডিট সম্পাদনা করেছি .. কেন এটি অপরিবর্তিত ছিল তা আমার কোনও ধারণা নেই। এখনই ঠিক করা হয়েছে
ইউরিয়েল

1
৩১ ⊂⌷¨⍨∘⍋(531⊥531|6779|36⊥9+⎕A⍳⊢)¨:, তবে আপনি আপনার বর্তমান বাইট গণনার অর্ধেকেরও কম সময়ে এটি বেশ সহজ করতে পারেন।
অ্যাডম

@ আদম তাই, আপনি বিভিন্ন ফর্ম্যাটে ইনপুট এবং আউটপুট সহ্য করছেন (মিশ্র বনাম অমিক্সড)?
এনজিএন

@ জিএন শিওর তবে আমার যে সমাধানটি মনে আছে তা সম্পূর্ণরূপে I / O মিশ্রিত করেছে।
অ্যাডম

3

রুবি, 48 বাইট

->x{x.sort_by{|y|y.map{|s|s.to_i(35)**2%47394}}}

অপব্যবহার করে যে "zero".to_i(35)0 হয় (যেহেতু 'z' বেস 35 তে কোনও বৈধ সংখ্যা নয়), তাই অন্য নয়টি সংখ্যার জন্য কোনও সূত্রকে আঘাত করা এতটা সহজ।




2

রুবি , 47 বাইট

->x{x.sort_by{|y|y.map{|s|s.to_i(32)%774%538}}}

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

সর্বাধিক অঙ্কের চেয়ে কম বেস ব্যবহার করলে শূন্যের ফলাফল আসে ( তাদের উত্তরে হিস্ট্রোক্যাট দ্বারা চিহ্নিত হিসাবে )


2

পাইথন 2 , 85 81 80 বাইট

সংখ্যা নির্ধারণের জন্য কেবল প্রতিটি শব্দের প্রথম দুটি অক্ষর ব্যবহার করে, তারপরে সেই তালিকাটিকে কী হিসাবে সূচকযুক্ত ফাংশনটি ব্যবহার করে বাছাই করে।

lambda _:sorted(_,key=lambda L:['zeontwthfofisiseeini'.find(s[:2])/2for s in L])

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

4 বাইট সংরক্ষণ করা হয়েছে, জনাথন অ্যালানকে ধন্যবাদ


কী ফাংশনে লুপ তালিকা বোঝার জন্য একটি 4 বাইট সংক্ষিপ্ত।
জোনাথন অ্যালান


1

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

Σ“¡×€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š“#skJ

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


Σ                           # Sort input by...
 “¡×€µ‚•„í†ìˆÈŒšï¿Ÿ¯¥Š“     # "zero one two three four five size seven eight nine"
                       #    # Split on spaces.
                        sk  # Find index of each input...
                          J # Join up.


@ কলডো আহ ... প্রতিটি শুরুর দুটি অক্ষর এনকোডিং করছেন? আমি মনে করি এটির নিজস্ব উত্তর হওয়া উচিত।
ম্যাজিক অক্টোপাস আরন

1

হাস্কেল , 133 122 109 107 106 বাইট

import Data.List
sortOn$abs.read.(>>=show.head.(`elemIndices`words"ze on tw th fo fi si se ei ni").take 2)

Ungolfed:

import Data.List

nums = ["ze","on","tw","th","fo","fi","si","se","ei","ni"]

lookup' :: Eq a => a -> [a] -> Int
lookup' v = head . elemIndices v

wordToInt :: String -> Int
wordToInt (x:y:_) = lookup' [x,y] nums

wordsToInt :: [String] -> Int
wordsToInt = read . concatMap (show . wordToInt)

sortN :: [[String]] -> [[String]]
sortN = sortOn wordsToInt



0

রুবি , 64 বাইট

->a{a.sort_by{|b|b.map{|n|"zeontwthfofisiseeini".index n[0,2]}}}

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

একটি ল্যাম্বদা স্ট্রিংয়ের 2D অ্যারে গ্রহণ করে এবং 2D টি স্ট্রিং প্রদান করে।

পিগব্যাকব্যাকিং অফ এমবম্ব007 এর পাইথন 2 উত্তর -26 বাইটের জন্য আমি পোস্ট করতে যাচ্ছি off



0

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

T`z\o\wit\hfsen`d
O`
T`d`z\o\wit\hfsen

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার স্যুট অন্তর্ভুক্ত। zowithfsenসেই স্ট্রিংয়ে অক্ষরগুলিকে তাদের অবস্থানের সাথে অস্থায়ীভাবে প্রতিস্থাপন করে কাজ করে , যা সংখ্যাগুলি বর্ণমুখে বাছাই করতে দেয়।


0

জেলি , 30 28 27 বাইট

w@€“¡¦ẇṆb~ṇjṚØ%ĖġṘḥḞṾṇJḌ»µÞ

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

-1 জনাথন অ্যালানকে ধন্যবাদ।

স্ট্রিং 'ওনেটওয়ো ... নাইন' এর প্রতিটি অঙ্কের সূচীটি সন্ধান করে তারপরে এটি একটি মূল ফাংশন হিসাবে ব্যবহার করে সাজান Þ'zero'শুরুতে অন্তর্ভুক্ত করার দরকার নেই কারণ প্রথম দুটি অক্ষরের সন্ধান 'zero'ব্যর্থ 0হবে এবং 'zero'অভিধানের পরিবর্তে "প্রাথমিক" তৈরি করে সূচীর পরিবর্তে ফিরে আসবে ।


'এক দুটি ... নয়' এর সংক্ষেপণ ব্যবহার করা একটি বাইট কম
জোনাথন অ্যালান

@ জোনাথান অ্যালান আহ, ধন্যবাদ আমি এটি যাচাই করার চিন্তাও করি নি। সংকোচনের 'zeontw...ni'সময় দীর্ঘ হয়ে যায়।
dylnan 21

... আর নেই "... প্রথম দুটি অক্ষর"।
জোনাথন অ্যালান


0

সি (ঝনঝন) , 229 বাইট

y,j,k,t[9];char *s="zeontwthfofisiseeini";r(char **x){for(j=y=k=0;k+1<strlen(*x);k+=j,y=y*10+(strstr(s,t)-s)/2)sscanf(*x+k,"%2[^,]%*[^,]%*[,]%n",t,&j);return y;}c(*x,*y){return r(x)-r(y);}f(*x[],l){qsort(&x[0],l,sizeof(x[0]),c);}

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

সি ফাংশনগুলিতে অ্যারেরের অ্যারে প্রেরণের কোনও সরল উপায় নেই, সুতরাং কোড-গল্ফের অনুভূতিতে, আমি ইনপুট ফর্ম্যাটে একটি ছোটখাটো স্বাধীনতা গ্রহণ করেছি।

f()স্ট্রিংগুলিতে পয়েন্টারের একটি অ্যারে গ্রহণ করে, যেখানে প্রতিটি স্ট্রিং একটি সংখ্যাসূচক আকারে কমা দ্বারা পৃথক স্পেল-আউট-ডিজিট দ্বারা উপস্থাপিত হয় lower অতিরিক্তভাবে, এটির জন্য দ্বিতীয় প্যারামিটারে অ্যারে সংখ্যক স্ট্রিং দরকার। আমি এটি গ্রহণযোগ্য আশা করি।

f()সাজানো ক্রম ব্যবহার করে পয়েন্টারগুলি প্রতিস্থাপন করে qsort()
r()কমা-বিভাজিত নম্বর স্ট্রিং থেকে ইনপুট নম্বর পড়ে। সংখ্যাটি সনাক্ত করতে এটি কেবল প্রথম দুটি অক্ষরের তুলনা করে।
c()তুলনা ফাংশন



@ সেলিংক্যাট আপনি দয়া করে ব্যাখ্যা করতে পারেন strstr("i"-19,t)-"zeontwthfofisiseeini"? এটি কি সংকলক নির্দিষ্ট বা মান?
জিপিএস

এটির .rodataমতো দেখতে অন্য কোনও নিদর্শন না থাকার উপর নির্ভর করে 0x69 0x00এবং "i""zeo..."
সংকলকটির

ভেবেছি .. সংকলক তা নিশ্চিত করার কোন উপায় আছে কি? আমি জানি যে এখানে নিয়মগুলি এটির অনুমতি দেবে তবে, আমি কি এটির উপরে নির্ভর করতে পারি?
জিপিএস

আমার প্রবৃত্তিটি "সত্যিকারের বিশ্বে" এড়াতে হবে তবে আপনার স্ট্রিংয়ের টুকরা যথেষ্ট পরিমাণে অনন্য হলে এটি সম্ভবত ভাল কাজ করবে। সম্ভবত স্ট্যাক ক্যানারি সম্পর্কিত কিছু বৈধ ব্যবহারের কেস থাকতে পারে তবে আমি কেবল হ্যালুসিনেটিংও হতে পারি।
সিলিংকাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.