পূর্ণসংখ্যার বর্ণমালা করুন


19

পূর্ণসংখ্যার বর্ণমালা করুন

প্রদত্ত সংখ্যার সংখ্যার জন্য, যখন তাদের বানান হয় তখন তাদের বর্ণমালা অনুসারে রাখুন (অর্থাত্ 1: এক, 2: দুই, 90: নব্বই, 19: উনিশ) আপনার কোড পরিসীমা জন্য কাজ করা উচিত [-999999, 999999]। আউটপুটে অবশ্যই সংখ্যার মধ্যে একটি সীমানা থাকতে হবে। একটি স্থান যেমন একটি স্থান এবং কমা যেমন নীচের উদাহরণগুলিতে দেখানো হবে তেমন কাজ করবে। ইনপুটটি পূর্ণসংখ্যার একটি অ্যারে, সীমানাঙ্কিত সংখ্যার একটি স্ট্রিং বা যাইহোক আপনি উপযুক্ত দেখেন। সমস্ত পূর্ণসংখ্যাকে অনন্য বলে ধরে নেওয়া হয়।

এই চ্যালেঞ্জের উদ্দেশ্যে নম্বরগুলি হাইফেনেটেড করা হয় না এবং অন্য কোনও অক্ষরের আগে স্পেসগুলি বর্ণমালা করা হয়। নেতিবাচক সংখ্যাগুলি শব্দটি ব্যবহার করে প্রকাশ করা হবে বলে ধরে নেওয়া হয় minus। উদাহরণস্বরূপ, fourপূর্বে হবে four thousandএবং -40স্ট্রিংটি ব্যবহার করে নম্বরটি সাজানো হবে minus forty। ধরুন সমস্ত সংখ্যা পুরোপুরি সংখ্যার শব্দের সমন্বয়ে গঠিত হবে এবং কোনও সংযুক্তি নেই (যেমন two thousand forty twoপরিবর্তে ব্যবহার করুন two thousand and forty two)।


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

একক সংখ্যা পূর্ণসংখ্যা:

ইনপুট:

1, 2, 3, 4, 5

আউটপুট:

5, 4, 1, 3, 2

একাধিক সংখ্যা পূর্ণসংখ্যা:

ইনপুট:

-1002, 5, 435012, 4, 23, 81, 82

আউটপুট:

81, 82, 5, 4, 435012, -1002, 23

শব্দের মধ্যে ফাঁকা স্থান, হাইফেন, কমা বা "এবং" নয়:

ইনপুট:

6, 16, 60, 64, 600, 6000, 60000, 60004, 60008, 60204, 60804

আউটপুট:

6, 600, 6000, 16, 60, 64, 60000, 60008, 60804, 60004, 60204

মনে রাখবেন, এটি , তাই সবচেয়ে কম বাইটের কোডটি জয়ী। কোনও ফাঁকা অনুমতি দেওয়া হয়নি!


এখানে সম্পর্কিত স্যান্ডবক্স পোস্টের লিঙ্কটি
wubs

ইনপুটটিতে কি কখনও একক একটিরও বেশি সংখ্যক পূর্ণসংখ্যা থাকবে?
ETH প্রোডাকশনগুলি

@ এথ প্রডাকশনগুলি না, তা হবে না। আমি প্রশ্নে এটি নির্দিষ্ট করব।
wubs

8
পিপিসিজিতে আপনাকে স্বাগতম। ভাল অবতার। : ডি প্রথম প্রশ্ন।
অ্যাডমবর্কবার্ক

@ টিমিডি ধন্যবাদ! আমি এখানে প্রায় আমার পক্ষে পাওয়ারশেল-ইনগের অপেক্ষায় রয়েছি।
wubs 21

উত্তর:


5

জাভাস্ক্রিপ্ট (ES6), 189 179 186 বাইট

let f =

a=>a.sort((x,y)=>!x-!y||(X=q(x),Y=q(y),X>Y)-(X<Y),q=n=>n<0?"L"+q(-n):n>999?q(n/1e3)+"Z"+q(n%1e3):n>99?q(n/100)+"K"+q(n%100):n>19?"  cYHFVSCO"[n/10|0]+q(n%10):"0PdaIGTQAMWDbXJEURBN"[n|0])

let g = a => console.log(`[${f(a)}]`)

g([1,2,3,4,5])
g([-1002,5,435012,4,23,81,82])
g([0,1000,1100])
<input id=I value="1 2 3 4 5"><button onclick="g(I.value.match(/\d+/g)||[])">Run</button>

মূল ধারণাটি হ'ল প্রতিটি ইনপুট নম্বরকে একটি সংক্ষিপ্ত স্ট্রিংয়ে রূপান্তর করা যা অন্যান্য অন্যান্য সংখ্যা-স্ট্রিং জোড়ার তুলনায় সঠিক লেকোগ্রাফিক্যাল অবস্থানে থাকে। এখানে অভিধানটি ব্যবহৃত হয়েছে: (স্নিপেটটি চালাবেন না; এটি কেবল দীর্ঘ তালিকাটি আড়াল করার জন্য ব্যবহৃত হয়েছে))

এটি প্রতিটি সংখ্যাকে তার লেক্সোগ্রাফিকভাবে সঠিক অবস্থানে ম্যাপিংয়ের একটি খুব সংক্ষিপ্ত উপায় তৈরি করে। পুনরাবৃত্তির qকাজটি এটাই করে:

q(-X)        => "L" + q(X)
q(XYYY)      => q(X) + "Z" + q(YYY)
q(XYY)       => q(X) + "K" + q(YY)
q(XY >= 20)` => "  cYHFVSCO"[X] + q(Y)
q(X)         => "0PdaIGTQAMWDbXJEURBN"[X]

0স্ট্রিং শুরুতে যে যেমন 100 (নিশ্চিত one hundred, রূপান্তরিত PK0) আগের অনুসারে বাছাই করা হয় 101( one hundred one, রূপান্তরিত PKP)। এটি একটি বিজোড় পরিস্থিতি তৈরি করে যেখানে 0 ( zero) অ্যারের সম্মুখভাগে বাছাই করা হয়, সুতরাং এটি ঘুরে দেখার জন্য, বাছাই ফাংশনে আমরা প্রথমে যেকোন জিরোকে ডানদিকে বাছাই করি !x-!y||(...


দেখে মনে হচ্ছে এটি কার্যকর হয় না [1100, 1000]। আমি আউটপুটটি আশা করব তবে আউটপুটটি 1000 (one thousand), 1100 (one thousand one hundred)ইনপুট হিসাবে একই ক্রম।
দুধ

@ মিল্ক হুম ... আমি জানি না কেন এটি ঘটে, তবে আমি এটি খতিয়ে দেখব।
ETH প্রোডাকশনগুলি

@ মিল্ক আহ, 1000হিসাবে পার্স করা হচ্ছে one thousand zero; আমি এই মুহুর্তে ঠিক করব। আমরা কি তারপরে সমর্থন করব 0? এটি একটি অনন্য কেস যা আমার কোডে 15 বাইট বা আরও যোগ করবে।
ETH প্রোডাকশনগুলি

11

7, 214 201 অবহিত করুন 118 বাইট

7 অবহিত হ'ল গল্ফ করার জন্য একেবারে ভয়ানক ভাষা, তাই আমি এখানে এটি একটি সুযোগ দিতে চেয়েছিলাম।

ইন্ডেন্টেশন ট্যাব ব্যবহার করা উচিত (\t ) অক্ষর , তবে এইচটিএমএল পছন্দ করে না। বিপরীতে, ইনডেন্টেশনের জন্য অবহিত স্থানগুলি পছন্দ করে না, সুতরাং আপনি যদি পরীক্ষার জন্য কোডটি এখানে থেকে অনুলিপি করে থাকেন তবে আপনাকে স্পেসগুলি ট্যাবগুলির সাথে প্রতিস্থাপন করতে হবে। অথবা পরিবর্তে মার্কডাউন উত্স থেকে অনুলিপি করুন।

Golfed:

থেকে এক্স:
    টেবিল 1 এর মাধ্যমে পুনরাবৃত্তি করুন:
        এখন কিউ এন্ট্রি "[শব্দগুলিতে আর এন্ট্রি]";
    সারণি 1 কিউ ক্রমে সাজান;
    "[টেবিল 1 এ আর]" বলুন।

ইনপুটটি একটি ইনফর্ম সারণী হওয়া উচিত, যেমন ( \tকলামগুলির মধ্যে):

1 নং টেবিল
আর (সংখ্যা) প্রশ্ন (পাঠ্য)
-1002
5
435012
4
23
81
82

আউটপুট:

81, 82, 5, 4, 435012, -1002, 23

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

বয়লারপ্লেট সহ ফাংশনটি কীভাবে কল করতে হবে তা দেখিয়ে উদ্বিগ্ন:

বর্ণমালা অনুসারে সংখ্যা মুদ্রণ করতে:
    বাছাইযোগ্য নম্বরগুলির সারণীর মাধ্যমে পুনরাবৃত্তি করুন:
        এখন নাম এন্ট্রি হ'ল "[কথায় সূচক এন্ট্রি]";
    নাম অনুসারে বাছাইযোগ্য নাম্বার সারণি সাজান;
    "[বাছাইযোগ্য সংখ্যাগুলির সারণিতে সূচক কলাম]" বলুন।

বাছাইযোগ্য সংখ্যাগুলির সারণী
সূচী (সংখ্যা) নাম (পাঠ্য)
-1002
5
435012
4
23
81
82

একটা ঘর আছে।
খেলা শুরু হলে: বর্ণমালা অনুসারে সংখ্যাগুলি মুদ্রণ করুন।

1
আমি এতে কিছুটা বিভ্রান্ত হয়ে পড়েছি। wordsইনফর্ম 7 এ অন্তর্নির্মিত সংখ্যার বানানযুক্ত সংস্করণগুলির একটি রেফারেন্স কি ?
পাভেল

1
@ পাভেল প্রকৃতপক্ষে! "(সংখ্যা) শব্দে" সংখ্যার পাঠ্য উপস্থাপনা সহ একটি স্ট্রিং প্রদান করে। এটি সহজেই নেতিবাচক সংখ্যার জন্য "বিয়োগ" ব্যবহার করে এবং এটি শব্দের মধ্যে হাইফেন রাখার সময় এটি ধারাবাহিকভাবে কাজ করে এবং সমস্ত বর্ণের আগে হাইফেনকে বর্ণমালা করে (সুতরাং শেষ ফলাফলটি একই)।
ড্রাকনিস

2
ভাষা পছন্দ জন্য +1। আমাকে যাচাই করতে হবে, তবে আমার মনে হয় কিছু গল্ফ করার সুযোগ রয়েছে, যদিও; উদাহরণস্বরূপ, পার্সারকে কী সত্যিই এই সমস্ত "" "নিবন্ধগুলি প্রয়োজন? এবং আপনাকে ওপিকে জিজ্ঞাসা করতে হবে, তবে "এবং" বৈধ ডিলিমিটার না হওয়ার কোনও স্পষ্ট কারণ আমি দেখতে পাচ্ছি না। তা না হলেও একটি একক স্পষ্ট স্পষ্টভাবে অনুমোদিত, তাই কেবল say "[R entry] "যথেষ্ট হওয়া উচিত।
ইলমারি করোনেন

আমি "এবং" শেষে বলব ঠিক আছে। আমি বলিনি যে ডিলিমিটারদের সমান হতে হবে, সুতরাং এটি একটি যথাযথ গ্রহণযোগ্য উত্তর। আমি যদি সবচেয়ে আকর্ষণীয় উত্তরের জন্য পয়েন্ট দিতে পারি তবে আমি আপনাকে এটি দিয়ে দেব। আমি সত্যিই গল্ফযুক্ত এই ভাষার পাঠযোগ্যতা উপভোগ করি। সুন্দর কাজ!
wubs

অবশেষে আমি কিছুটা ইনফর্ম 7 নিয়ে খেলার সুযোগ পেয়েছি এবং আপনার প্রবেশের মাত্র 118 বাইটে পুনরায় গল্ফ করতে পেরেছি। যেহেতু মন্তব্যে ইনফর্ম কোড পোস্ট করা খুব ভাল কাজ করে না, তাই আমি এগিয়ে গিয়েছিলাম এবং সরাসরি আপনার উত্তরে এটি সম্পাদনা করি। আমি আশা করি আপনি কিছু মনে করবেন না, নির্দ্বিধায় ফিরবেন এবং / অথবা আমার সম্পাদনাগুলি আপনার পছন্দ মতো কোনওভাবেই মুছে ফেলুন।
ইলমারি করোনেন

4

গণিত, 67 বাইট

SortBy[#,#~IntegerName~"Words"~StringReplace~{","->"","-"->""}&]&

অজানা ফাংশনটি তার যুক্তি হিসাবে পূর্ণসংখ্যার একটি তালিকা গ্রহণ করা এবং এর মান হিসাবে পূর্ণসংখ্যার একটি তালিকা প্রদান করে। #~IntegerName~"Words"এটি একটি অন্তর্নির্মিত যা ইংরেজিতে তার নামের সাথে একটি পূর্ণসংখ্যা পরিবর্তন করে। IntegerNameকখনও কখনও এর আউটপুটে কমা এবং হাইফেন থাকে তাই StringReplaceকলটি সেগুলি থেকে মুক্তি পেয়ে যায়। (দুঃখজনকভাবে হাইফেনটি ইউটিএফ -8-তে আসলে 3-বাইট অক্ষর, 8208)) তারপরে SortByপরিবর্তিত পূর্ণসংখ্যার নামের মান অনুসারে মূল তালিকাটি বর্ণমালা অনুসারে বাছাই করে।

একটি দুর্দান্ত কাকতালীয়: এর আউটপুটের পরিবর্তে IntegerNameব্যবহার negativeকরে minus— তবে অনুমোদিত কোনও সংখ্যার নামে বর্ণিত কোনও শব্দ two দুটি শব্দের মধ্যে বর্ণানুক্রমিক নয়, সুতরাং কোনও প্রতিস্থাপনের প্রয়োজন নেই!

(আমাকে স্মরণ করিয়ে দেওয়ার জন্য টুপিটি এনজেনিসিস Sortby


যশ! আমি এই সমাধানটি পেতে খুব কাছাকাছি এসেছি, কিন্তু সেই ড্যাশটি আমাকে মাথাব্যথা দিচ্ছিল!
নেজিনিসিস

আপনার উত্তর এখানে আসলে সঠিক হাইফেন ব্যবহার করে? যদি আমি এখানে ম্যাথমেটিকাতে যা আছে তা অনুলিপি করি তবে এটি হাইফেনগুলি প্রতিস্থাপন করে না IntegerName। ওল্ফ্রাম ডকুমেন্টেশন বলছে যে এটি ইউনিকোড চরিত্র 2010
নেজেনিসিস

সম্ভবত না, তবে this আমি এই উত্তরে সঠিক হাইফেন পাওয়ার চেষ্টা করেছি, তবে দেখে মনে হচ্ছে আমি সফল হই নি।
গ্রেগ মার্টিন

আমি আপনার উত্তরটি অর্ধেকে কেটেছি;)
জে আন্তোনিও পেরেজ

এবং তারপরে কিছু ... আপনি স্ট্রিংয়ে অপ্রয়োজনীয় পরিবর্তন করেন।
জে আন্তোনিও পেরেজ 15

4

বাশ + জিএনইউ ইউটিস + বিএসডিগেমস, 52

  • 4 বাইট সংরক্ষিত হয়েছে @ আইজাবেরের জন্য ধন্যবাদ।
sed 's/.*/echo `echo &|number`:&/e'|sort|sed s/.*://

আই / ও হ'ল নতুন লাইন-সীমিত রেখা lines

  • প্রথম সেড এক্সপ্রেশন প্রতিটি শঙ্খ সংখ্যাটি শেল কমান্ডের সাথে প্রতিস্থাপন করে যা সংখ্যার শব্দের ফর্মকে ( bsdgamesnumber ইউটিলিটি দ্বারা প্রদত্ত ) আউটপুট দেয় এবং :তারপরে সংখ্যার একটি সংখ্যাগত ফর্ম অনুসরণ করে ।
  • এটি তখন sortএড।
  • তারপরে দ্বিতীয় sedস্ট্রিপগুলি অক্ষর পর্যন্ত নেতৃত্ব দেয় এবং অন্তর্ভুক্ত করে :, সংখ্যার ফর্মটি প্রয়োজনীয় অনুসারে বাছাই করা ছেড়ে দেয়।

numberসঠিকভাবে "বিয়োগ" পরিচালনা করে এবং এর আউটপুট নির্দিষ্ট ফর্ম্যাটটির কাছে যথেষ্ট sortপ্রয়োজন যা প্রয়োজনীয় হিসাবে কাজ করে। এটি "চৌদ্দ চার" এর পরিবর্তে আউটপুট "চৌদ্দ চার" করে, তবে এটি বাছাই করার দৃষ্টিকোণ থেকে গুরুত্বপূর্ণ নয়।

Bsdgames প্যাকেজের ইনস্টলেশন প্রয়োজন হতে পারে:

sudo apt-get install bsdgames

sedএবং sortইউটিলিটি প্রায় অবশ্যই আপনার ডিস্ট্রো থেকেই রয়েছেন।


-t:অকেজো এবং আপনি ব্যবহার করতে পারেনnumber<<<&
izabera

@ আইজাবের হ্যাঁ - ধন্যবাদ - আমি এগুলি সরিয়েছি -t:। তবে, সেডের ভাল eবৈশিষ্ট্যটি কমান্ডগুলি ব্যবহার করে চালায় sh, সুতরাং বাশ বৈশিষ্ট্যগুলি যেমন <<<কাজ করে না।
ডিজিটাল ট্রমা

এটি যতক্ষণ না আপনার শ বাশ ততক্ষণ ঠিক কাজ করে: পি
ইজাবের

@ আইজব্বার নোপ - যদি shপশিক্সকে যথাসম্ভব অনুকরণ করার চেষ্টা করা হয় তবে বাশ শুরু হয়েছে , যার অর্থ ব্যাশিজম <<<বন্ধ রয়েছে। GNU sedএর ভাল eবৈশিষ্ট্য কমান্ড শুরু করে /bin/sh -c ...এবং না দিয়ে শুরু করে /bin/bash -c ...। আপনি কি এই চেষ্টা করেছেন?
ডিজিটাল ট্রমা

বাশ কখনই বন্ধ হয় <<<না, এমনকি
পিক্সিক্স

1

পাইথন + প্রতিস্থাপন, 97 91 89 বাইট

from inflect import*
a={x:engine().number_to_words(x)for x in words}
sorted(a,key=a.get)

ব্যবহৃত inflectরুপান্তর গ্রন্থাগারwordsপূর্ণসংখ্যার অ্যারেগুলি তাদের ফোনেটিক / স্ট্রিং উপস্থাপনায় । কে / ভি জোড়ের একটি অভিধানে সঞ্চিত যেখানে কীগুলি সংখ্যার উপস্থাপনা এবং মানগুলি স্ট্রিং প্রতিনিধিত্ব ছিল। মান অনুসারে বাছাই করা কীগুলির তালিকা ফিরিয়ে দেয়।

সম্পাদনা: ETH প্রডাকশন এবং অ্যালেক্স.এসকে ধন্যবাদ 5 এবং 3 বাইট সংরক্ষণ করা!


পিপিসিজিতে আপনাকে স্বাগতম! স্থানগুলি সরিয়ে আপনি এটিকে গল্ফ করতে পারেন ; উদাহরণস্বরূপ, দ্বিতীয় লাইন হতে পারে a={x:inflect.engine().number_to_words(x)for x in words}
ETH প্রোডাকশনগুলি

আপনি দ্বিতীয় লাইনে ব্যবহার from inflect import*এবং নিক্ষেপ করে দুটি বাইট সংরক্ষণ করতে পারেন inflect.
অ্যালেক্স।

হায়রে, দেখে মনে হচ্ছে এটি 40, 44, 40000, 40804, 40004, 40204 (যা সেই ক্রমে থাকা উচিত) সঠিকভাবে তালিকাটিকে বাছাই করতে ব্যর্থ।
ইলমারি করোনেন

0

গণিত, 30 বাইট

নীচের উত্তরটি একটি খাঁটি ফাংশন আউটপুট দেয় যা একটি ইনপুট হিসাবে পূর্ণসংখ্যার একটি তালিকা গ্রহণ করে এবং তাদের বর্ণানুক্রমিক নাম অনুসারে বাছাই করে। চিকিত্সক ঠিক কি আদেশ করেছেন;)

SortBy[#~IntegerName~"Words"&]

নিখরচায় সংস্করণটি এখানে:

SortBy[IntegerName[#, "Words"]&]

এবং এখানে একটি উদাহরণ ব্যবহার:

SortBy[#~IntegerName~"Words"&][{0,1,2,3,4,5,6,7,8,9,10}]

যা হিসাবে লেখা যেতে পারে

SortBy[#~IntegerName~"Words"&]@{0,1,2,3,4,5,6,7,8,9,10}

তারা অভিন্ন আউটপুট উত্পাদন করে - গণিতে, f[x]এটি সমতুল্য f@x

Outputs: {8, 5, 4, 9, 1, 7, 6, 10, 3, 2}

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

MyF = SortBy[#~IntegerName~"Words"&];
TheirF = SortBy[#, #~IntegerName~"Words"~ StringReplace~{"," -> "", "-" -> ""} &] &;
MyF[Range[-999999, 999999]] == TheirF[Range[-999999, 999999]]
(*Outputs True*)

একটি দুর্দান্ত তদন্ত! দুর্ভাগ্যক্রমে, তারা আসলে একই আদেশ দেয় না। TheirF880,000 এর আগে 888 সঠিকভাবে সাজায়, যখন MyFতা হয় না। সম্ভবত সমস্যাটি অদ্ভুত হাইফেনের অনুলিপি-পেস্টিংয়ের সাথে সম্পর্কিত: আপনার সংস্করণটি TheirFসম্ভবত সাধারণ হাইফেনগুলি (যার মধ্যে কোনওটি নেই) প্রতিস্থাপন করছে, যখন প্রকৃত সংস্করণটি অদ্ভুত 3-বাইট ইউনিকোড হাইফেনের পরিবর্তে। (কমাগুলি অপসারণ করা প্রয়োজন কিনা তা এখনও আকর্ষণীয় হবে))
গ্রেগ মার্টিন

আমি এটি রেঞ্জ [999999] এ পরীক্ষা করেছি। দেখে মনে হচ্ছে কমাগুলি অপসারণ অপ্রয়োজনীয়, তবে "[হাইফেন]" "" এর সাথে "" প্রতিস্থাপন করা অবশ্যই প্রয়োজনীয়।
নেজেনিসিস

0

কমন লিস্প, 113 বাইট

কোনও বাহ্যিক গ্রন্থাগার প্রয়োজন নেই।

(print(mapcar #'cdr(sort(loop for i in x collect(cons(format()"~r"i)i))(lambda(y z)(string-lessp(car y)(car z))))))

আউটপুট যদি xহয় '(1 2 3 4 5):

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