ETOIN SHRDLU গল্ফ


43

চ্যালেঞ্জটির সংক্ষিপ্ত এবং মিষ্টি বর্ণনা: ETAOIN SHRDLU এর
ভিত্তিতে , আপনার চ্যালেঞ্জটি হ'ল সংক্ষিপ্ততম প্রোগ্রাম লিখুন বা কোনও ভাষায় ফাংশন লিখুন যা ইংরেজী বর্ণমালার 26 টি অক্ষরকে ইনপুটটিতে তাদের ফ্রিকোয়েন্সি এর উপর ভিত্তি করে আউটপুট করে।

সত্যিই দীর্ঘ, শুকনো এবং পুঙ্খানুপুঙ্খ স্পেসিফিকেশন:

  • আপনার প্রোগ্রাম / ফাংশনটি পাঠ্যের একটি স্ট্রিং ইনপুট হিসাবে গ্রহণ করবে, এতে এক বা একাধিক বড় হাতের অক্ষর এবং / অথবা ছোট হাতের অক্ষর থাকবে এবং বিরামচিহ্ন, সংখ্যা, চিহ্ন এবং অন্যান্য বর্ণমালা অক্ষর থাকতে পারে।
  • প্রোগ্রাম / ফাংশনটি কেবল ইংরেজী বর্ণমালার কেবলমাত্র 26 টি UPPERCASE বর্ণগুলি আউটপুট দেয় অবশ্যই ইনপুটটিতে প্রদর্শিত না হয় সেগুলি অন্তত অন্ততপক্ষে বারবার নির্দেশ করে যে কতবার ইনপুটটিতে প্রদর্শিত হবে তার ভিত্তিতে।
  • সম্পাদনা: ফ্রিকোয়েন্সি কেস-সংবেদনশীলতার সাথে গণনা করা হয় তবে আউটপুটটি বড়হাতে হওয়া উচিত।
  • যদি দুটি বা ততোধিক অক্ষরের একই ফ্রিকোয়েন্সি থাকে তবে সেগুলি কোনও ক্রমে থাকতে পারে।
  • হোয়াইটস্পেসের মতো অন্য কোনও আউটপুট অনুমোদিত নয়।
  • 7/1/2014 সম্পাদনা করুন: প্রতিক্রিয়ার ভিত্তিতে, আমি এই বিধিটি সংশোধন করছি। অনুমোদিত কেবলমাত্র অন্য আউটপুটটি হ'ল alচ্ছিক নেতৃস্থানীয় এবং / অথবা হোয়াইট স্পেস, যেমন একটি ট্রেলিং নিউলাইন। অন্য কোনও আউটপুট অনুমোদিত নয়।
  • ইনপুটটির জন্য অপরিজ্ঞাত আচরণের অনুমতি রয়েছে যাতে কোনও অক্ষর থাকে না।

বিজয়ী এখন থেকে 7 দিন বাছাই করা হবে, সুতরাং সেই আঙ্গুলগুলি টাইপ করুন!


উদাহরণ ইনপুট:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vitae erat velit. Mauris gravida euismod libero ut tincidunt. Phasellus elit dui, consectetur et egestas in, aliquam vitae diam. Donec eget varius ante. Vestibulum cursus diam aliquet, egestas orci quis, placerat dolor. Proin vel nisi lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam erat volutpat. Etiam libero tortor, ornare id dui eget, posuere dignissim libero. Pellentesque commodo consequat volutpat. Integer hendrerit sapien libero, vel viverra augue facilisis sit amet. Quisque consectetur eget nisl quis dignissim. Ut lacinia pretium quam a placerat.
Morbi sed interdum risus, nec pretium lectus. Morbi imperdiet est id accumsan molestie. Duis sed fermentum nisl. Nunc vitae augue mattis, dictum lectus vel, accumsan nisl. Sed ultricies adipiscing rhoncus. Vivamus eu lacus a enim venenatis eleifend. Praesent consectetur tortor non eleifend ultricies. Mauris et odio posuere, auctor erat at, fringilla est. Proin in vestibulum erat. Maecenas congue commodo ante vel varius. Sed tempus mi ut metus gravida, nec dictum libero dapibus. Morbi quis viverra elit. Ut pharetra neque eget lacus tincidunt dictum. Fusce scelerisque viverra tellus et pretium.
Fusce varius adipiscing odio. Nulla imperdiet faucibus sem, at rhoncus ipsum adipiscing vitae. Phasellus imperdiet congue lacus et mollis. Nullam egestas mauris magna, et mollis lectus varius ut. Sed sollicitudin adipiscing dolor, vel elementum elit laoreet molestie. Aliquam nec nulla vel sem ultrices ullamcorper. Nullam nec felis magna. Duis sodales orci non justo aliquam tempus. Integer mi diam, tempor sed vulputate et, varius et nunc. Vestibulum sodales ipsum id mi pharetra, ut convallis mi accumsan. Sed dictum volutpat vestibulum.
Quisque ac dolor sagittis, aliquam libero at, euismod enim. Nulla ullamcorper posuere nulla vitae varius. Nam at dolor non libero elementum pellentesque in in lorem. Fusce porttitor turpis in quam placerat varius. Donec lorem orci, condimentum eu sapien sit amet, aliquet commodo magna. Quisque sed lectus sit amet arcu euismod accumsan et non nunc. Phasellus placerat congue metus, feugiat posuere leo dictum quis. Sed ultricies feugiat eros dignissim bibendum.
Mauris scelerisque consectetur libero eget varius. Aenean neque nunc, ullamcorper vitae orci in, auctor ornare sapien. Nam lacinia molestie imperdiet. Nam vitae mattis nibh. Vestibulum consequat tellus ac nisi sagittis pulvinar. Nullam mollis ornare quam, et venenatis leo porttitor sit amet. Nulla urna neque, dignissim non orci ut, volutpat ultrices erat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque vestibulum tellus nec eros faucibus porta.

উদাহরণ আউটপুট:

EITUSALNROMCDPVGQBFHJKWXYZ

দ্রষ্টব্য: সেই ইনপুটটির মধ্যে একটি 5 টি উপায় টাই রয়েছে KWXYZ

সম্পাদনা:

প্রতিযোগিতা শেষ! যারা অংশগ্রহণ করেছেন সবাইকে ধন্যবাদ. আর এখন বিজয়ী (গুলি!) জন্য: উভয় ডেনিস 'CJam এবং isaacg এর Pyth উত্তর একটি খুব বড় 19 টি অক্ষর আসেন। (দুঃখিত, তবে আমি উত্তরগুলির কোনওটিই গ্রহণ করতে যাচ্ছি না বলে আমি মনে করি এটি অন্যের সাথে অন্যায় হবে)) সম্পাদনা করুন: ডেনিসের পরামর্শ গ্রহণ করে আমি তার উত্তরটিকে স্বীকৃত হিসাবে চিহ্নিত করব কারণ তার মধ্যে প্রথমটি ছিল 19 অক্ষর পৌঁছান। সম্মানজনক উল্লেখ ইলমারি করোনেনের তৃতীয় স্থানের গল্ফস্ক্রিপ্ট উত্তরে ২২ টি চর এবং আন্ডারগ্রাউন্ডোমোরিলেলের -৫ -চর পাইথন উত্তর যা সর্বাধিক উত্সাহ পেয়েছে তাতে যান। আবারও, যারা অংশ নিয়েছেন তাদের সবাইকে ধন্যবাদ!


কেবল ইনপুটটির আপার বড় অক্ষরের জন্য কী ফ্রিকোয়েন্সি পরিমাপ করা হয়?
হাওয়ার্ড

2
@ ইলমারি কারোনেন হ্যাঁ নিউলাইনগুলি হোয়াইটস্পেস হিসাবে গণ্য করুন যাতে অনুমতি দেওয়া হবে না।
আব্রাহাম

8
@ আব্রাহাম: আইএমও; যদি কিছু ভাষার জন্য একটি অনুবর্তনযোগ্য নতুন লাইন (বিশেষভাবে) অনুমোদিত হয় তবে এটি সমস্ত ভাষার জন্য সাধারণত অনুমোদিত হতে হবে; কমপক্ষে নয় কারণ একটি পাঠ্য স্ট্রিম EOF অনুসারে একটি নতুন লাইন দ্বারা সমাপ্ত করা উচিত।
উইলিয়াম টটল্যান্ড

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

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

উত্তর:


26

সিজেম, 21 19 বাইট

qeu:A;'[,65>{A\-,}$

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

উদাহরণ

$ cjam etaoin.cjam <<< "~XyxY YyxZ"
YXZABCDEFGHIJKLMNOPQRSTUVW

(কোনও নতুন লাইন নেই)

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

qeu:A; " Read from STDIN, convert to uppercase, save in the variable “A” and discard, ";
'[,    " Push an array of all ASCII characters before “[” (NUL to “Z”).               ";
65>    " Remove the first 64 characters (NUL to “@”).                                 ";
{      " Sort the array of characters by the following mapping:                       ";
  A\   " Swap the character with the string saved in variable “A”.                    ";
  -    " Remove all occurrences of the character from the string.                     ";
  ,    " Push the length of the string.                                               ";
}$     "                                                                              ";

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


সত্যিই খুব চালাক।
আব্রাহাম

অভিনন্দন @ ডেনিস প্রতিযোগিতা জিতেছে!
আব্রাহাম

43

পাইথন 2 বা 3 - 77 75 বাইট

f=lambda s:''.join(sorted(map(chr,range(65,91)),key=s.upper().count))[::-1]

এসটিডিআইএন থেকে ইনপুট ধরার আগে আমার একটি উত্তর ছিল, তবে আমি বুঝতে পারি এটি প্রযুক্তিগতভাবে অবৈধ। আমি ব্যবহার করেছি input()যা কেবল একটি একক লাইন পায়, তবে প্রশ্নের উদাহরণ ইনপুট থেকে বোঝা যায় যে এটি একবারে একাধিক লাইন হ্যান্ডেল করা উচিত। অনুমানের সাথে দেখা করতে, আমি আমার উত্তরটিকে এমন একটি ফাংশনে পরিণত করেছি যা স্ট্রিং আর্গুমেন্ট গ্রহণ করে। আমার অবাক করার বিষয়, এটি ছিল দুটি বাইট ছোট! এটা আমার কাছে ঘটতে না যে print(...)input()বেশি সময়ের ছিল f=lambda s:এবং s

এটি উত্তরটি পাইথন 2 এবং পাইথন 3 উভয়ের সাথেই সামঞ্জস্যপূর্ণ করে তোলে মূলত এটি কেবল পাইথন 3 ছিল, কারণ এটি ব্যবহৃত input()হয়েছিল (যা এটি raw_input()2 সালে ডাকা হয়েছিল)। এখন এটি একটি ফাংশন, এটি উভয় মধ্যে কাজ করে।

ব্যাখ্যা

                                  range(65,91)                              # The numbers 65 to 90
                          map(chr,range(65,91))                             # Convert to ASCII

                                                    s                       # The input string
                                                    s.upper()               # Convert to uppercase
                                                    s.upper().count         # Function literal for 'how many times the argument appears in the string'

                   sorted(map(chr,range(65,91)),key=s.upper().count)        # Sort by that function
           ''.join(sorted(map(chr,range(65,91)),key=s.upper().count))       # Concatenate to string
           ''.join(sorted(map(chr,range(65,91)),key=s.upper().count))[::-1] # Step through by -1 (i.e. reverse string)

  lambda s:''.join(sorted(map(chr,range(65,91)),key=s.upper().count))[::-1] # Make it a function (`return` is implicit for lambdas)
f=lambda s:''.join(sorted(map(chr,range(65,91)),key=s.upper().count))[::-1] # Give it a name

2
অন্যদিকে, ব্যাখ্যায় দেওয়া মন্তব্যগুলি আমাকে ফেসপামে পরিণত করে। সিএস 101 এ আপনাকে স্বাগতম!
ইজকাটা

6
@ ইজকাটা গুরুত্বপূর্ণ বিষয় হ'ল কোডটি পড়ার জন্য এটি আপনাকে দেখায়। কারণ গল্ফড কোড পড়া শুরু করার সর্বোত্তম জায়গাটি খুব কমই স্পষ্টভাবে দেখা যায়, বিশেষত যখন এর চেয়ে কিছুটা জটিল বা মগ্ন হয়।
মার্টিন ইন্ডার

1
সুন্দর উপস্থাপনা!
xnor

3
@ ইজ্ক আমার লক্ষ্যটি অজগর জানেন না এমন লোকদের কাছে এটি বোধগম্য করে তোলা। আমি কোনও বাস্তব প্রকল্পে এ জাতীয় মন্তব্য করব না।
আন্ডারগ্রাউন্ডোমোনাইল

2
@ আইএম নং countকোনও পরিবর্তনশীল বা কিছু নয়, এটি আক্ষরিক কাজ। শীতল এটা দ্বারা একটি ফাংশনের ফেরানো মানটি গুন পাবে হবে যেমন -1একটি স্টিকিং দ্বারা -এর না একটি বৈশিষ্ট্য পাইথন আছে, সামনে।
ভূগর্ভস্থমোরাইল

15

বাশ, 65 বাইট

(tr a-z A-Z;echo {A..Z})|fold -1|sort|uniq -c|sort -nr|tr -dc A-Z

উদাহরণ

$ bash etaoin.sh <<< "~AbaB BbaC"
BACZYXWVUTSRQPONMLKJIHGFED

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

(              #
  tr a-z A-Z   # Turn lowercase into uppercase letters.
  echo {A..Z}  # Print all uppercase letters.
) |            #
fold -1 |      # Split into lines of length 1.
sort |         # Sort those lines (required for piping to uniq).
uniq -c |      # Print the frequencies of all lines.
sort -nr |     # Sort by frequency (reversed).
tr -dc A-Z     # Remove everything that's not an uppercase letter.

1
এটি স্থানীয় পোর্টেবল নয়, আপনাকে LC_COLLATE = C (বা আরও ছোট, এলসি_এলএল) জোর করতে হবে।
ক্রিস ডাউন

6
@ ক্রিসডাউন পোর্টেবিলিটি সাধারণত কোড গল্ফ উত্তরগুলির জন্য উদ্বেগ নয়।
কেভিন

1
বহনযোগ্যতা ব্যতীত, এই উত্তরটি যা দেয় তা ভালভাবে সংজ্ঞায়িত হয় না।
ক্রিস ডাউন

@ ক্রিসডাউন: আমি কয়েকটি স্ট্রিং এবং কয়েকটি লোকেল পরীক্ষা করেছি, তবে ইউনিক বর্ণানুক্রমিক অক্ষরের জন্য দুর্ব্যবহার করে এমন একটি উদাহরণ আমি পাই না। আপনি কি আমাকে একটি দেখাতে পারেন?
ডেনিস

@ ক্রিসডাউন এই স্ক্রিপ্টটি শেল বাশ বা ksh93 হলে ভাঁজ, বাছাই, টিআর, ইউনিকের বিএসডি সংস্করণ ব্যবহার করে ওপেনবিএসডি-তে চালানোর পক্ষে যথেষ্ট পোর্টেবল। Zsh এর মতো অন্যান্য শেলগুলি প্রসারিত করতে ব্যর্থ {A..Z}। সমস্ত LC_COLLATE লোকেলগুলি কাজ করে, কারণ ওপেনবিএসডি-তে কেবলমাত্র LC_COLLATE = C রয়েছে।
কর্নিগ

12

পাইথ 1.0.2 , 19 20

=ZUwsVm;dSm[cZkk)UG

এটি এখানে চেষ্টা করুন: http://ideone.com/fork/YlWpEJ

পাইথ সম্পর্কে এখানে আরও জানুন: http://esolangs.org/wiki/Pyth

উদাহরণ:

ETAOIN SHRDLU ভিত্তিক, আপনার চ্যালেঞ্জ হ'ল সংক্ষিপ্ততম প্রোগ্রাম লিখতে বা কোনও ভাষায় ফাংশন লিখুন যা ইনপুটটিতে তাদের ফ্রিকোয়েন্সি এর উপর ভিত্তি করে ইংরেজি বর্ণমালার 26 টি বর্ণকে আউটপুট করে।

দেয়:

TENOHARSIULGFPYDCBWQMZXVKJ

ব্যাখ্যা:

=ZUw: ইনপুটকে বড় হাতের ও জেডে স্টোরে রূপান্তর করুন

sV: বিপরীতে এর যোগফল মুদ্রণ করুন

m;d: শেষ এন্ট্রি

S: ক্রমবর্ধমান ক্রমে তাদের প্রথম প্রবেশ অনুসারে বাছাই করা

m[cZkk): তালিকাগুলি [জেড, কে-তে কে গণনা]

UG: বড় হাতের অক্ষরে K এর জন্য।

রুক্ষ পাইথনের সমতুল্য:

G='abcdefghijklmnopqrstuvwxyz'
Z=copy(upper(input()))
print(_sum(rev(_map(lambda d:d.pop(),sorted(_map(lambda k:_list(count(Z,k),k),upper(G)))))))

এটি এন্ট্রি নয়, আমি কেবল ভেবেছিলাম লোকেরা এটি দেখতে পছন্দ করবে। পাইথ 1.0.4 এ, নিম্নলিখিত প্রোগ্রামটি 10 ​​টি অক্ষরে একটি সমাধান:

JUwo_cJNUG

ব্যাখ্যা:

JUw: ইনপুট রূপান্তর করুন বড় হাতের এবং জে স্টোর।

o: (মুদ্রণ) অনুসারে বাছাই করুন

_cJN: -1 * (জেতে N গণনা)

UG: বড় হাতের অক্ষরে ওভার এন

এটি কোনও আইনি সমাধান নয় কারণ পাইথ ১.০.২ থেকে 1.0.4-এ যোগ করা সহ বেশ কয়েকটি পরিবর্তন o , এর ক্রমানুসারে, ক্রিয়াকলাপ যোগ করা সহ এই সমস্যার প্রতিক্রিয়াতে ছিল।


আমি আপনাকে পাইথ লিঙ্কটি যদি পাইথের অফিশিয়াল পৃষ্ঠায় আপডেট করার পরামর্শ দিই তবে এটি উপস্থিত থাকে।
এএল

@ ওয়াল এটি পাইথের অফিশিয়াল পৃষ্ঠা, যতক্ষণ না আমি কোনও এসওলং এন্ট্রি না করি।
isaacg

আপনার কেন Zএকবার পরে ইনপুটটিকে রেফারেন্স করতে সঞ্চয় করতে হবে? কেবলমাত্র Zতার জায়গায় অভিব্যক্তিটি রাখলে ইনপুটটি একাধিকবার পড়তে পারে?
xnor

@xnor জেড পজিশনে ল্যাম্বডা ফাংশনের অভ্যন্তরে ব্যবহৃত হয়, কারণ এটি কোনও মানচিত্রের প্রথম যুক্তিতে থাকে, সুতরাং এটি পরিবর্তনশীলে সংরক্ষণ করা দরকার। সেখানে ইউউ ব্যবহার করার ফলে ইনপুটটি 26 বার পঠিত হতে পারে।
isaacg

1
ঠিক আছে, পাইথ এসোলাং এবং গিথুব উভয়ের উপরে রয়েছে। গিথুব লিঙ্কটি ইওসোলং পৃষ্ঠার নীচে রয়েছে, যা উত্তরে লিঙ্কযুক্ত। গিথুব কোড বর্ণায়ন করে।
isaacg

11

জাভাস্ক্রিপ্ট ( ES6 ) 119 117

সম্পাদনা করুন: (-2) toUpperCaseকলটিতে কেস-সংবেদনশীল RegEx ব্যবহারের প্রয়োজনীয়তা সরানো হয়েছে split

a=prompt(f=x=>a.split(RegExp(x,'i')).length)
alert([...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'].sort((b,c)=>f(c)-f(b)).join(''))

বিকল্প (একই দৈর্ঘ্য): একক ফাংশনে শৃঙ্খলা এবং চরিত্র গণনা সংশ্লেষিত।

a=prompt()
alert([...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'].sort(f=(b,c)=>c?f(c)-f(b):a.split(RegExp(b,'i')).length).join(''))

একটি ফাংশন হিসাবে: 105 104

সম্পাদনা: (-1) একক ফাংশনে শৃঙ্খলা এবং চরিত্রের গণনা সংশ্লেষিত।

F=a=>[...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'].sort(f=(b,c)=>c?f(c)-f(b):a.split(RegExp(b,'i')).length).join('')

1
আকর্ষণীয় কৌশল।
ম্যাট

1
একটি স্ট্রিং ছড়িয়ে ... আনন্দদায়ক!
বার্গি

10

গল্ফস্ক্রিপ্ট, 22 টি অক্ষর

:?91,+-26>{.32+]?\-,}$

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

ব্যাখ্যা:

  • :?প্রতীকে ইনপুট স্ট্রিং বরাদ্দ করে ?। (আমি একটি বিরামচিহ্ন প্রতীক ব্যবহার করি যাতে নীচের সংখ্যাটি 91চিহ্নের অংশ হিসাবে পার্স করা যায় না))
  • 91,0 থেকে 90 (ASCII কোড কোড Z) এর সংখ্যার একটি তালিকা তৈরি করে ।
  • + এই তালিকাটিকে ইনপুট স্ট্রিংয়ে যুক্ত করে, যার ফলে এটি ASCII কোডের একটি অ্যারে থেকে স্ট্রিংয়ে রূপান্তর করে (এবং স্বাচ্ছন্দ্যে স্ট্যাক থেকে ইনপুট স্ট্রিংটিও সরিয়ে দেয়)।
  • -26>এই স্ট্রিংয়ের সর্বশেষ 26 টি অক্ষর গ্রহণ করে, থেকে বড় হাতের ASCII অক্ষর যুক্ত স্ট্রিং উত্পাদন AকরেZ
  • { }$ইনপুট স্ট্রিং অক্ষর সব কোড ব্লক প্রযোজ্য হয় এবং ফলাফলের অনুযায়ী যারা অক্ষর বাছাই করে।
  • কোড ব্লকের ভিতরে, .অক্ষরটিকে সদৃশ করে এবং 32+অনুলিপিটি বড় হাতের থেকে ছোট হাতের কাছে রূপান্তর করে। ]একটি অ্যারের মধ্যে এই দুটি অক্ষর সংগ্রহ ?\-সঞ্চিত ইনপুট স্ট্রিং লাগে ?এবং তা থেকে অ্যারের মধ্যে অক্ষরের সব ঘটনার সরিয়ে ফেলা হবে, এবং ,গন্য অবশিষ্ট স্ট্রিং এর দৈর্ঘ্য, যা সাজানোর কী হবে। অক্ষরগুলি এই কী দ্বারা ক্রমোন্নত ক্রম অনুসারে বাছাই করা হবে, এবং এইভাবে ঘটনার সংখ্যার দ্বারা ক্রমবর্ধমান ক্রমে।

1
দেখে মনে হচ্ছে আমাদের প্রায় একই ধারণা ছিল। মাইনর বাগ: জেড অক্ষরটি অনুপস্থিত। এটা হওয়া উচিত 91,+-26>
ডেনিস

@ ডেনিস: আহ, উফ! স্থির, যদিও সেই চিঠিটির দরকার নেই কেন? :)
ইলমারি করোনেন

2
@ ইলমারি কারোনেন সম্প্রদায়ের মতামতের ভিত্তিতে, আমি একটি অনুবর্তনযোগ্য নতুন লাইনের অনুমতি দেওয়ার জন্য বিধিগুলি সংশোধন করেছি (সম্পূর্ণ বিবরণের জন্য প্রশ্নটি দেখুন)। আপনার স্কোরটি এখন :) এর 22চেয়ে বেশি25
আব্রাহাম

8

হাস্কেল, ১১০ বাইট

import Data.List
import Data.Char
a%f=compare(f a).f
f t=sortBy(% \c->length$filter((/=c).toUpper)t)['A'..'Z']

ব্যবহারের উদাহরণ:

λ> f "Based off ETAOIN SHRDLU, your challenge is to write the shortest program or function in any language that outputs the 26 letters of the English alphabet based on their frequency in the input."
"ETNAHORISULFGPBCDYMQWJKVXZ"

1
কী (/=c)এবং এর থেকে মুক্তি পাওয়া 0-?
লিন

@ মরিস চমৎকার ধরা! আমি এটিকে সম্পাদনা করেছি এবং অন্য একটি চরিত্র মুণ্ডন করেছি।
ফ্লান্ক

6

রুবি 2.0, 53 টি অক্ষর

সম্পাদনা : মাল্টলাইন স্ট্রিং সহ সঠিকভাবে কাজ করতে স্থির, ধন্যবাদ @ durron597!

f=->s{$><<(?A..?Z).sort_by{|c|-s.upcase.count(c)}*''}

নামে পরিচিত একটি ফাংশন তৈরি করে fযা নিম্নলিখিত হিসাবে ব্যবহার করা যেতে পারে:

f['jackdaws love my big sphinx of quartzzz']

প্রিন্টগুলি বন্ধ করুন:

AZOSICGHEJKLMBFPQRDTUVWXYN

2
এই উত্তরটি সঠিক নয়। এটি এই উত্তরটি দেয়: EITASUROLNCMPDVQGBHFKJWXYZপ্রশ্নের উদাহরণের জন্য
durron597

1
@ durron597 ধন্যবাদ, আপনি সঠিক! এটি মাল্টলাইন স্ট্রিংগুলি সঠিকভাবে পরিচালনা করছে না - getsএকসাথে একটি লাইন দেয়। এটা তোলে পরিবর্তন করে সংশোধন করা যেতে পারে getsথেকে gets$nকিন্তু একটি ফাংশন সেটিকে পরিবর্তন 1 গৃহস্থালির কাজ খাটো।
পল প্রেসিডেজ

6

পার্ল, 54 46 বাইট

আপডেট: আরও অপ্টিমাইজেশন পর এটি চিপা যেতে পারে 46 বাইট: (ধন্যবা ডেনিস জন্য -n/ {}হ্যাক; চীনা Perl বর্বর জন্য <=>-> -হ্যাক)

s/./$h{uc$&}++/eg}{say sort{$h{$b}-$h{$a}}A..Z

এটি রান দিয়ে চালানো হয় perl -nE

আসল সমাধান (বিশেষ পার্ল বিকল্পগুলির প্রয়োজন নেই):

s/./$h{uc$&}++/egfor<>;print sort{$h{$b}<=>$h{$a}}A..Z

পার্ল 5.8.3, 5.14.2 এ যাচাই করা হয়েছে

যদি আপনি একটি সতর্কতা পান তবে পৃথক egএবংfor কোনও জায়গা (+1 চর) যদি আপনি মনে করেন তবে

উদাহরণস্বরূপ ব্যবহার:

$ python -c 'import this' | perl -le 's/./$h{uc$&}++/egfor<>;print sort{$h{$b}<=>$h{$a}}A..Z' 2>/dev/null
ETAISONLRHPBUCDYMFGXVWKZJQ

বিবরণ: .প্রতিটি ইনপুট লাইনের ( for<>) অক্ষরের ( ) পরিবর্তে একটি বিকল্প "প্যাটার্ন" প্রয়োগ করুন, যা বাস্তবে একটি অভিব্যক্তি (এর eপতাকা s///) হিসাবে মূল্যায়ন করা হয়, যা একটি উত্কৃষ্ট ( uc) বর্ণকে বৃদ্ধি করে ./ / $&আরও স্পষ্ট (.)/ $1) (অবিচ্ছিন্ন) হ্যাশ () এ গণনা করুন %h। তারপরে অক্ষরের ফ্রিকোয়েন্সি হ্যাশটি ডান অনুক্রমের উপরের-বর্ণমালা বর্ণমালা প্রিন্ট করতে একটি সাজানোর তুলনা ফাংশনে ব্যবহৃত হয়।


1
সংক্ষিপ্ত এবং কোনও ত্রুটির বার্তা নেই:perl -ne 's/./$h{uc$&}++/eg}{print sort{$h{$b}<=>$h{$a}}A..Z'
ডেনিস

ডেনিস: খুব ইন্টারেস্টিং, দেখতে অনেকটা টাইপোর মতো .. এইটা কি? আমার কিছু রূপ ব্যবহার হয়েছে -nএবং END{}, তবে সেগুলি সর্বদা দীর্ঘ ছিল ... আপনি চাইলে উত্তরটি নির্দ্বিধায় অনুভব করতে পারেন
মাইখাল

1
হ্যাঁ, কোডের চারপাশে -nমোড়ানো while(<>){...}। আমি অন্যান্য ব্যবহারকারীর কোড সম্পাদনা করা এড়িয়ে চলি। ভুল করা খুব সহজ, কিছু জিনিস কেবল কয়েকটি কম্পিউটারে কাজ করে ইত্যাদি
ডেনিস

1
জো: আমি }{"ইঞ্জেকশন" সম্পর্কে কথা বলছিলাম , কেবল সুপরিচিত -nবিকল্প সম্পর্কে নয় । এক আশা করবেন পারে যে কোড স্ট্রিং আসলে টেকনিক্যালি হয় , ফাঁসি সামনে যখন লুপ কোড স্ট্রিং-এর দ্বারা আবৃত না শুধুমাত্র ঠিক যে এটা একরকম কাজ মতো যদি এটা আবৃত ছিল ..
mykhal

1
আরো দুটি অক্ষর সংরক্ষণ করুন: প্রতিস্থাপন $h{$b}<=>$h{$a}সঙ্গে$h{$b}-$h{$a}
চীনা Perl বর্বর

5

আর, 123 বাইট

@ রিচিকোটেনের পরামর্শের জন্য কোডটি উন্নত হয়েছে।

text <- "Based off ETAOIN SHRDLU, your challenge is to write the shortest program or function in any language that outputs the 26 letters of the English alphabet based on their frequency in the input."

f=function(x){b=plyr::count(toupper(strsplit(x,"")[[1]]));c=merge(LETTERS,b,all.x=T);paste(c[order(-c$freq),1],collapse="")}

f(text)

আউটপুট:

> f(text)
[1] "ETNAHORISULFGPBCDYMQWJKVXZ"

1
@ রিচিকটন: আমি এখনই আপনার প্রস্তাবিত সম্পাদনাটি দুবার প্রত্যাখ্যান করেছি। আপনি যদি প্রত্যাখাত ভোটের কারণ সম্পর্কে অবহিত হন তবে আমি জানি না, সুতরাং আপনি যদি এটি পড়েন: দয়া করে মন্তব্যে গল্ফিং উন্নতি সরবরাহ করুন, যাতে ওপি সেগুলি পর্যালোচনা করতে পারে। এখানে কেন: meta.codegolf.stackexchange.com/a/1619/8478
মার্টিন

4

সি ++, 185 183 179 177 বাইট

জয়ের প্রত্যাশিত নয়, অবশ্যই (সি ++ কি কখনও জিততে পারে?) তবে তবুও একটি মজার অনুশীলন।

#include <algorithm>
#include <stdio.h>
int f[256],p;main(){for(p=65;p<91;p++)f[p]=p;while(~(p=getchar()))f[p&95]+=256;p=256;std::sort(f,f+p);while(p--)f[p]&95&&putchar(f[p]);}

ব্যাখ্যা:

#include <algorithm>         // for std::sort
#include <stdio.h>           // for getchar, putchar
int f[256],p;                // declare an array of count-prefixed chars, and a counter
main(){
    for(p=65;p<91;p++)       // 65 == 'A', 91 == the character after 'Z'
        f[p]=p;              // set the character for the slot
    while(~(p=getchar()))    // read characters until EOF
        f[p&95]+=256;        // increment the packed count for the character stripped of the 'lowercase bit'
    p=256;                   // start a countdown
    std::sort(f,f+p);        // sort the array
    while(p--)               // do the countdown
        f[p]&95 &&           // if the masked-off character is set...
          putchar(f[p]);     // print it
}

4

ভিবিএস স্ক্রিপ্ট 181 109

সম্পূর্ণ ভিন্ন অ্যালগরিদম ব্যবহার করতে আপডেট হয়েছে। জাভাস্ক্রিপ্ট বিটস!

সুন্দর:

dim b(99):i=ucase(inputbox(k))
for y=65to 90
    c=chr(y)
    a=len(replace(i,c,k))
    b(a)=c+b(a)
next
msgbox join(b,k)

Golfed:

dim b(99):i=ucase(inputbox(k)):for y=65to 90:c=chr(y):a=len(replace(i,c,k)):b(a)=c+b(a):next:msgbox join(b,k)

4

জে 41 35 বাইট

(u:65+i.26)([\:[#/.~@,e.~#])toupper

ডেমো:

i=: 'This is a test to see whether this is still working'
(u:65+i.26)([\:[#/.~@,e.~#])toupper i
STIEHLORWAGKNBCDFJMPQUVXYZ

ব্যাখ্যা:

(u:65+i.26) & ( [ \: [ #/.~@,e.~#]) toupper) )
ABCDE...          |    |    |   |      uppercase the right argument
                  |    |    |   \copy from right only member from left
                  |    |     \append the left argument
                  |    \ Afterwards Count apperances of each letter
                  \ Sort the left according to the appearances

মূলটি হ'ল বাম অ্যারে সংযুক্ত করা, যেমন সমস্ত অক্ষর উপলব্ধ এবং ইতিমধ্যে ক্রমে। কাঁটাচামচকে তৃতীয় টাইন হিসাবে বিশেষ্যটি ব্যবহার করার একটি মজার পরিণতি হ'ল এটি ক্রিয়াপদের পাশাপাশি বাক্যাংশ হিসাবেও কাজ করে।


4

গ্রোভি - 130 123 115 112 98 92

@ সিফ্রিকের পরামর্শ অনুসারে (দুবার!):

f={('A'..'Z').collectEntries{c->[c,it.grep(~/(?i)$c/).size()]}.sort{-it.value}*.key.join()}

একটি ছোট পরীক্ষা (নির্লজ্জভাবে @jpjacobs থেকে চুরি):

assert f('This is a test to see whether this is still working') == 
    'STIEHLORWAGKNBCDFJMPQUVXYZ'

আর প্রস্তাবিত পরীক্ষাও উত্তীর্ণ হচ্ছে


1
ফাংশনটি কেবল ইনপুট স্ট্রিংয়ে উপস্থিত নয়, সমস্ত 26 টি অক্ষর আউটপুট করতে হবে।
অ্যালগরিদমশর্ক

@ অ্যালগরিদমশর্ক, প্রকৃতপক্ষে, আমার ভুলটি স্থির হয়েছে
উইল এলপি

f={('A'..'Z').collectEntries{c->[c,it.toUpperCase().findAll(c).size()]}.sort{-it.value}.keySet().join()}104
সিফ্রিক

1
অন্য 6 বাইট: it.grep(~/(?i)$c/)পরিবর্তেit.toUpperCase().grep(c)
4'14

@ সিফ্রিক বাহ! আবার ধন্যবাদ! এটা toUpperCaseআমার কাছ থেকে নরকে বিরক্ত করছিল।
এলপি করবে

4

এসএএস - 217 (আমার মনে হয়)

ইনপুট কার্ড 4 স্টেটমেন্টের পরে লাইনে বা আপনার সিস্টেমের জন্য উপযুক্ত পাঞ্চ কার্ডে রাখা উচিত। আমি মনে করি এই পদ্ধতিটি ইনপুটটি উদ্ধৃত করার চেষ্টা করে বনাম কয়েকটি অক্ষর সংরক্ষণ করেছে।

data a;
input;
S = upcase(compress(_INFILE_,,'ak'));
do i=1 to length(S);
l=substr(S,i,1);
output;
end;
cards4;
;;;;
run;
proc sql;
select l into :o separated by '' from
(select l, 1/count(l) as f from a group by l) order by f;
quit;

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


অনুমানটি পূরণ করে না, তবে এখনও দুর্দান্ত, সুতরাং +1: ডি
বিড়াল

4

অ্যাপলস্ক্রিপ্ট, 278

আমি লক্ষ্য করেছি যে "a" = "A"এটি অ্যাপলস্ক্রিপ্টে সত্য। আমি কোড গল্ফ এ এটি ব্যবহার করতে পারি, তবে স্ক্রিপ্টের বাকী অংশটি খুব শব্দযুক্ত। আমি অ্যাপলস্ক্রিপ্ট 1.8.3 ব্যবহার করেছি।

এটি একটি ফাংশন সংজ্ঞায়িত করে f। আপনি যদি f("a string")স্ক্রিপ্টের নীচে যোগ করেন এবং এটি স্ক্রিপ্ট সম্পাদকটিতে চালনা করেন তবে ফলাফলটি প্রদর্শিত হবে।

on c(n)
ASCII character(64+n)
end
on f(s)
set{a,r}to{{},""}
repeat with i from 1 to 26
set j to 0
repeat with b in s
if b&""=c(i)then set j to j+1
end
set a to a&j
end
repeat with j from 0 to(count s)
repeat with i from 1 to 26
if a's item i=j then set r to c(i)&r
end
end
r
end

ফর্ম্যাট এবং মন্তব্য:

-- Returns nth letter of alphabet.
on c(n)
    ASCII character (64 + n)
end c

-- Returns letters in s sorted by frequency.
on f(s)
    -- a: list of letter counts
    -- r: resulting string
    set {a, r} to {{}, ""}

    -- For each letter from A to Z,
    -- count letters in string s.
    repeat with i from 1 to 26
        set j to 0
        repeat with b in s
            -- Can't use b = c(i), because
            -- b is a reference to a string
            -- and = never dereferences its
            -- operands. Get contents of b,
            -- here by coercing b to string.
            if b & "" = c(i) then set j to j + 1
        end repeat
        -- Set item i of a to count j.
        set a to a & j
    end repeat

    -- Sort letters by frequency.  Do a counting sort
    -- because AppleScript lacks a sort command.
    repeat with j from 0 to (count s)
        repeat with i from 1 to 26
            if a's item i = j then set r to c(i) & r
        end repeat
    end repeat
    r
end f

-- Example call:
f("Now is the time for all good men to come to the aid of their country.")
-- Result: "OTEIRNMHLFDCAYWUSGZXVQPKJB"

3

ভিবিএস স্ক্রিপ্ট 157 156 বাইট

সম্পাদনা করুন: পরিবর্তন বাক্সে ইউএসএল (পি) কে পিচবাক্স পিতে

আরও পঠনযোগ্য:

s=ucase(InputBox(z))    'z is empty.
L=len(s)
Dim a(255)
for i=1to L
    x=asc(mid(s,i))
    a(x)=a(x)+1
next
for t=0to L
    For i=65To 90
        If a(i)=t then p=chr(i)&p
    next
next
msgbox p

গল্ফড: (155 টি অক্ষর + 1 ক্যারেজ ফিরে)

s=ucase(InputBox(z)):L=len(s):Dim a(255):for i=1to L:x=asc(mid(s,i)):a(x)=a(x)+1:next:for t=0to L:For i=65To 90:If a(i)=t then p=chr(i)&p
next:next:msgbox p

আমি কোডটি সহ এটি 171 এর আগে পেয়েছিলাম যা আমি আরও আকর্ষণীয় পেয়েছি তবে আরামেড্রাইয়ের বাছাইয়ের পদ্ধতিটি ছোট এবং লেন (গুলি) প্রয়োজন, যা প্রথম লুপের জন্য "" চেয়ে "" কম "তৈরি করে। (হাই তোলা)

's=UCase(InputBox(Z))&8 'just need any extra character.  0-7 don't work because &7 is octal

s=UCase(InputBox(Z)) 'nevermind
Dim a(999)
While Len(s)
    x=Asc(s) 'returns ascii of first char
    a(x)=a(x)-1 'going negative saves a character later...
    s=Mid(s,2) 'doesn't care if you run out of string
Wend
for j=1 to 26 'this used to be   While Len(p)<26
    For i=65To 90
        If a(i)<a(y) Then y=i 'it is barely not worth it to do a(i)+a(i+32)>a(y) here to skip the ucase() above
    Next
    p=p&Chr(y)
    a(y)=1 'if I didn't go negative this would have to be -1.  arrays default to 0.
Next
MsgBox(p)

আমি এই পোস্ট থেকে কিছু দুর্দান্ত কৌশল শিখেছি! উল্লেখ করার জন্য ধন্যবাদ। একটি জিনিস: আমার মনে হয় এমন for t=0হওয়া উচিত for t=1, অন্যথায় আপনি সর্বদা পুরো বর্ণমালাটি মুদ্রণ করেন।
স্বাচ্ছন্দ্যের সাথে

1
@ কমফোর্টেড্রেই পুরো বর্ণমালা মুদ্রণ করা দরকার। "প্রোগ্রাম / ফাংশনটি কেবল ইংরেজী বর্ণমালার কেবলমাত্র 26 টি উচ্চ বর্ণের অক্ষর অবশ্যই আউটপুট দিতে পারে,
ইনপুটটিতে

থাম। মিস করলাম তাহলে এটা আমার ভুল ধন্যবাদ!
স্বাচ্ছন্দ্যের সাথে

3

জে - 38 35 চর

স্ট্রিং হিসাবে ডানদিকে ইনপুট গ্রহণ করা একটি ফাংশন। বিজয়ী নন, তবে মজাদার লেখা ছিল।

(u:65+i.26)([\:[#/.~@,e.~#])toupper

ব্যাখ্যা:

  • toupperস্ট্যান্ডার্ড লাইব্রেরিতে এমন একটি ক্রিয়া যা স্ট্রিং উপস্থাপন করে। এরপরে ক্রিয়াটির ডান যুক্তি হয়ে যায়, বাম যুক্তিটি বর্ণমালা: ASCII 65 থেকে 90 এর কোডপয়েন্ট করে।

  • [এবং ,e.~#])( #) বাম দিকের ]( e.~) উপাদান এবং ডান আর্গ ( ) এর সেই অক্ষরগুলি নির্বাচন করে এবং তারপরে ( ,) বাম আর্গ প্রিপেন্ড করে ([ ) । বুদ্ধিমানভাবে, আমরা কেবল বড় হাতের অক্ষর রাখি এবং বর্ণমালাটির একক অনুলিপি শেষ পর্যন্ত যুক্ত করি, যাতে নিশ্চিত হয়ে যায় যে আমরা সেগুলি সবই পেয়েছি।

  • #/.~@তারপরে প্রতিটি চরিত্রের ফ্রিকোয়েন্সি দেয়। এটি এমনটি ঘটে যা এটিকে বর্ণমালা অনুসারে দেওয়া হয়, তাই ঠিক পরে আমরা \:বর্ণমালা (বাম আর্গুমেন্ট) ডাউনসোর্ট করতে পারি[ ) ।

নীচে একটি দ্রুত অলস উদাহরণ। নিজের জন্য এটা চেষ্টা করুন মুক্ত মনে tryj.tk

   (u:65+i.26)([\:[#/.~@,e.~#])toupper 'Based off ETAOIN SHRDLU, your challenge is to write the shortest program or function in any language that outputs the 26 letters of the English alphabet based on their frequency in the input.'
ETNAHORISULFGPBCDYMQWJKVXZ

3

টি-এসকিউএল 178

মূলত, এটি আমার ভিবিএস স্ক্রিপ্ট সমাধান তবে এসকিউএল এ প্রয়োগ করা হয়েছে।

এটি কোনও কলাম যুক্ত করতে এক্সএমএল আউটপুট অপব্যবহার। ব্যবহারিক ব্যবহারে, এটি অনুকরণ করার জন্য এটি একটি বাইরের টেবিলে যুক্ত হতে পারেGROUP_CONCAT মাইএসকিউএল এবং অন্যদের মধ্যে ফাংশন পারে।

@পরিবর্তনশীল ঘোষণা :

DECLARE @ CHAR(1024)= 'enter your text here';

কোড:

with y AS(
    SELECT UPPER(@)i,0l,91y
    UNION ALL
    SELECT i,len(replace(i,char(y-1),'')),y-1
    FROM y
    WHERE y>65
)
SELECT LTRIM(
(
    SELECT char(y)
    FROM y
    WHERE y<91
    ORDER BY l
    FOR XML PATH(''))
)

3

পার্ল, 78 বাইট

undef$/;$i=<>;$r{$i=~s/$_//gi}.=$_ for A..Z;print$r{$_}for sort{$b<=>$a}keys%r
  • কোনও সাদা স্থান ছাড়াই কেবলমাত্র 26 টি বড় হাতের অক্ষরগুলি ফ্রিকোয়েন্সি ক্রমে আউটপুট are
  • বাঁধা অক্ষর বর্ণানুক্রমিক ক্রমে দেওয়া হয়।

প্রশ্নের উদাহরণের জন্য ফলাফল:

EITUSALNROMCDPVGQBFHJKWXYZ

Ungolfed:

# read input
# ----------
undef $/; # disable input separator
$i = <>;  # $i holds the complete input as one string

# analyze
# -------
# For each uppercase letter (A upto Z) its occurences are counted
# via the number of substitutions made by s/$_//gi. The lowercase
# letter is included via modifier "i".
# 
# The occurrence count is then used as key for hash %r.
# The uppercase letter is appended to the value of that hash entry.
$r{$i =~ s/$_//gi} .= $_ for A..Z;

# output
# ------
# The hash keys are sorted numerically in reverse order by
# the specified sort function.
print $r{$_} for sort {$b<=>$a} keys %r

এটি উদাহরণস্বরূপ কাজ করতে পারে, বট যেমন echo -e 'x\ny\n\nz\n'আউটপুট হিসাবে নয়, যা ফিরে আসে XYZABCDEFGHIJKLMNOPQRSTUVW, তবে XYABCDEFGHIJKLMNOPQRSTUVWZপরিবর্তে ফলন দেয় । অনুমান কেন .. :)
মাইখাল

@ মাইখাল: স্থির।
হাইকো ওবারডিক

3

পিএইচপি - 105 বাইট

<?preg_filter(~‹§æ“Ö¢‹ö,'$f[$0&fl]++',join('',range(a,z)).$argv[1]);arsort($f);foreach($f as$l=>$F)echo$l;

এখানে একটি হেক্সডাম্প, বিশেষ অক্ষরের কারণ:

0000000 3c 3f 70 72 65 67 5f 66 69 6c 74 65 72 28 7e dc
0000010 a4 be d2 85 a2 dc 9a 2c 27 24 66 5b 24 30 26 df
0000020 5d 2b 2b 27 2c 6a 6f 69 6e 28 27 27 2c 72 61 6e
0000030 67 65 28 61 2c 7a 29 29 2e 24 61 72 67 76 5b 31
0000040 5d 29 3b 61 72 73 6f 72 74 28 24 66 29 3b 66 6f
0000050 72 65 61 63 68 28 24 66 20 61 73 24 6c 3d 3e 24
0000060 46 29 65 63 68 6f 24 6c 3b                     
0000069

এবং কিছুটা কম গল্ফযুক্ত সংস্করণ:

<?
preg_filter(           // regular expression
  "#[A-z]#e",          // matches every letter + 'eval' flag
  '$f[$0&fl]++',        // so this code runs for every letter
                       // $f is an array whose indices are uppercase letters
                       //   and whose values represent the number of occurences
                       // lowercase is converted to uc with the bitwise and
                       //   fl is 11011111 in binary, every bit except for 32's is set
  join('', range(a,z)) // adding abcdefghijklmnopqrstuvwxyz to the input
    .$argv[1]);        //   because not all letters have to appear in the input
arsort($f);            // sort $f in reverse, maintaining indices
foreach($f as$l=>$F)   //
  echo$l;              // print each index in order

উদাহরণ:

 $ php etaoin_shrdlu.php "This function sorts an array such that array indices maintain their correlation with the array elements they are associated with."
 ATIRESHNOCYUWMDLFXZBVGPQKJ

বিশেষ চরিত্রগুলি কীভাবে preg_filter()কাজ করবে?
আব্রাহাম

3
পিএইচপি-তে হ'ল বিটওয়াইস অপারেটর না, এবং আপনি এটি স্ট্রিংগুলিতেও প্রয়োগ করতে পারেন, সেক্ষেত্রে এটি প্রতিটি চরিত্রের সাথে কাজ করে। তদ্ব্যতীত, পিএইচপি স্ট্রিং আক্ষরিক হিসাবে টেক্সটের স্ট্রিংগুলি পার্স করে খুশি যে এগুলিতে কোনও বিশেষ অক্ষর নেই (যেমন অপারেটর, vari ভেরিয়েবলের জন্য, সেমিকোলন, প্যারেন্টিজেস ...)। সুতরাং, "# [এজেড] # ই" এর পরিবর্তে wise wise §æ "Ö ¢‹ the (বিটওয়াইস উল্টানো সংস্করণ) লিখলে একটি বাইট সংরক্ষণ হয়, কারণ এটি উদ্ধৃত করতে হবে না।
অরেল বালি

আহ, ধন্যবাদ এখন জ্ঞান করে তোলে।
আব্রাহাম

1
পিএইচপি-তে কিছু হিসাবে ইনফোফারটি বোঝায়। পবিত্র মোলি।
ফ্লফি

echo join(array_keys($f));একটি বাইট সংরক্ষণ করতে পারে
টাইটাস

3

লিংকপ্যাডে সি # - 203 বাইট

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

void e(string i){var a="";foreach(var d in i.ToUpper().GroupBy(x=>x).OrderByDescending(u=>u.Count()))if(d.Key<91&&d.Key>64){a+=d.Key;}for(int x=65;x<91;x++)if(!a.Contains((char)x)){a+=(char)x;}a.Dump();}

দুঃখজনকভাবে এটি লোগান বাঁধের উত্তরকে হারাতে পারে না যদি আমি ভিজুয়াল স্টুডিওতে তৈরি করতাম।

আরও পঠনযোগ্য সংস্করণ:

void e(string i)
    {
        var a = "";
        foreach (var d in i.ToUpper().GroupBy(x => x).OrderByDescending(u => u.Count()))
        {
            if (d.Key < 91 && d.Key > 64)
            {
                a += d.Key;
            }
        }
        for (int x = 65; x < 91; x++)
        {
            if (!a.Contains((char)x))
            {
                a += (char)x;
            }
        }
        a.Dump();
    }

হ্যাঁ, আরও লিনকুই প্রেম! : ডি
এলডাম

3

সি # (এবং লিনকিউ) 255 226 210 বাইট

প্যাট্রিক হুইজিংয়ের পরামর্শ ব্যবহার করে ক্যোরিয়াম সিনট্যাক্সটি এখন খাটো:

namespace System.Linq{class P{static void Main(string[]a){Console.Write((from c in(a[0]+"ABCDEFGHIJKLMNOPQRSTUVWXYZ").ToUpper()where c>'@'&&c<'['group c by c into g orderby-g.Count()select g.Key).ToArray());}}}

ব্যাখ্যা:

Console.Write(
    (from c //declare our range variable
       in (a[0] + "ABCDEFGHIJKLMNOPQRSTUVWXYZ").ToUpper() //declare the datasource
     where c > '@' && c < '[' //include only letters
     group c by c into g //run of the mill group by
     orderby -g.Count() //order by descending
     select g.Key //we only want the actual letters
     ).ToArray() //mash it all into an array
  );

সমতুল্য পদ্ধতি সিনট্যাক্স (217):

namespace System.Linq{class P{static void Main(string[]a){Console.Write((a[0]+"ABCDEFGHIJKLMNOPQRSTUVWXYZ").ToUpper().GroupBy(c=>c).OrderBy(c=>-c.Count()).Where(c=>c.Key>'@'&&c.Key<'[').Select(c=>c.Key).ToArray());}}}

মূল পোস্ট:

namespace System.Linq{class P{static void Main(string[]a){(a[0]+"ABCDEFGHIJKLMNOPQRSTUVWXYZ").ToUpper().GroupBy(c=>c).OrderByDescending(c=>c.Count()).Where(c=>c.Key>'@'&&c.Key<'[').ToList().ForEach(c=>Console.Write(c.Key));}}}

এটি আমার প্রথমবারের জমা এবং আমার কাজকর্ম করা উচিত তবে এটি কেবল এত মজার মতো দেখায় কারণ আমার মনে হয়েছিল আমি আসলে একবারে অংশ নিতে পারি।

ব্যাখ্যা:

(a[0] + "ABCDEFGHIJKLMNOPQRSTUVWXYZ") //ensure each character appears once
  .ToUpper()
  .GroupBy(c => c) //get access to .Count()
  .OrderByDescending(c => c.Count())
  .Where(c => c.Key > '@' && c.Key < '[') //exclude anything other than letters
  .ToList() //Only lists have a .ForEach() :(
  .ForEach(c => Console.Write(c.Key)); //print output

আমি লিনকিউ-এর জন্য পদ্ধতি সিনট্যাক্সটি কখনই ব্যবহার করি না এটি আমার জন্য একটি শেখার অভিজ্ঞতা ছিল :) এটি নিয়ে এখনই ভাবছিলাম আমি অক্ষরের অক্ষরগুলি তাদের পূর্ণসংখ্যার অংশগুলির সাথে প্রতিস্থাপন করে 2 বাইট সংরক্ষণ করতে পারি, তবে মেহ h

প্রোগ্রামফক্স এবং নাম লকের টিপসকে সংক্ষিপ্ত করে ধন্যবাদ :)

সমতুল্য কোয়েরি সিনট্যাক্স (কিছুটা দীর্ঘ):

(from c in (a[0]+"ABCDEFGHIJKLMNOPQRSTUVWXYZ").ToUpper() where c>'@'&&c<'[' group c by c into g orderby g.Count() descending select g.Key).ToList().ForEach(c=>Console.Write(c));

1
একটি প্রথম বর্ণন, আপনি আপনার বর্গ নামকরণ ঠিক করে অক্ষরের একটি অনেক বাঁচাতে পারে Pপরিবর্তে Programএবং string[]aপরিবর্তে string[] argsএবং c=>...পরিবর্তে (c)=>...
নুম লক

দুটি usingস্টেটমেন্টের পরিবর্তে , আপনি নিজের শ্রেণিটি System.Linqনেমস্পেসের ভিতরে রাখতে পারেন এবং উভয় বিবৃতি ব্যবহার করে মুছে ফেলতে পারেন। তারপরে আপনি কিছু অক্ষর সংরক্ষণ করতে পারেন এবং এটি এখনও ঠিক কাজ করবে।
প্রোগ্রামফক্স

@ ননমলক রাইট, এমনকি এটি ভাবেনিও :) @ প্রোগ্রামফক্স যা আমাকে কিছুই সংরক্ষণ করতে পারে না কারণ এর namespaceচেয়ে বেশি দীর্ঘ usingএবং দু'জনের অতিরিক্ত {}আমার জন্য আরও ব্যয় হবে।
ld

1
namespace System.Linq{}এটি দেখতে চেয়ে পরিষ্কারভাবে সংক্ষিপ্ত using System;using System.Linq;। ধারণাটি হ'ল উভয়কে usingসম্পূর্ণরূপে বাদ দেওয়া ।
নুম লক

আহ্ হ্যাঁ এটি উভয়কে সরিয়ে দেয়, আপনি ঠিক বলেছেন, আমি ভাবছিলাম এটি কেবল একটিটিকে সরিয়ে দিয়েছে। ধন্যবাদ।
ld

3

সি ++ 701 322 232 বাইট

প্রথম সংস্করণ 701 বাইট (idiomatic STL ব্যবহার)

#define _HAS_TRADITIONAL_STL 1
#include <numeric>
#include <iostream>
#include <iterator>
#include <string>
#include <algorithm>
#include <functional>
#include <map>
#include <set>
#define ALL(x) x.begin(), x.end()
using namespace std;
typedef istream_iterator<char> iic;typedef pair<int, char> pic;map<char, int> c;set<pic> d;
void f1(char x) {c[x]--;}
void f2(const pic &p) {d.insert(make_pair(p.second, p.first));}
int main(){string s(26, 0);stdext::iota(ALL(s), 65);copy(ALL(s), ostream_iterator<char>(cout));transform(iic(cin), iic(), back_inserter(s), toupper);for_each(ALL(s), f1);for_each(ALL(c), f2);transform(ALL(c2), ostream_iterator<char>(cout), select2nd<pic>());}

প্রসারিত পরিষ্কার সংস্করণ:

#define _HAS_TRADITIONAL_STL 1
#include <numeric>
#include <iostream>
#include <iterator>
#include <string>
#include <algorithm>
#include <functional>
#include <map>
#include <set>
using namespace std;

typedef istream_iterator<char> iic;
map<char, int> counts;
set<pair<int, char> > counts2;

void docount(char ch) { counts[ch]--; }
void toCounts2(const pair<char, int> &p) { counts2.insert(make_pair(p.second, p.first)); }

int main()
{
    string s(26, 0);
    stdext::iota(s.begin(), s.end(), 65);
    transform(iic(cin), iic(), back_inserter(s), toupper);
    for_each(s.begin(), s.end(), docount);
    for_each(counts.begin(), counts.end(), toCounts2);
    transform(counts2.begin(), counts2.end(), ostream_iterator<char>(cout), select2nd< pair<int, char> >());
}

ধারণাটি হ্যাক ছাড়াই একটি "যথাযথ" সি ++ প্রোগ্রাম প্রদর্শন করা। বয়লারপ্লেট এবং এটি কেবল ভিসি ++ এ সংকলন করে তা উপেক্ষা করুন

ব্যাখ্যা:

আমরা A থেকে Z কে আইওটা () দিয়ে একটি স্ট্রিংয়ে পূরণ করি , এটি নিশ্চিত করে যে আমরা যখন উপস্থিতিগুলি গণনা করি তখন প্রতিটি অক্ষর ইনপুটটিতে না থাকলেও উপস্থিত হয়।

রূপান্তর () স্ট্যান্ডার্ড ইনপুট থেকে অক্ষর দ্বারা স্বরলিপি অনুলিপি করে এবং একে একে টুপার () কল করার পরে এটির শেষের দিকে রাখে

প্রতিটি চরিত্রের গণনা মানচিত্রে হ্রাস পেয়েছে (নেতিবাচক গণনাগুলি বজায় রেখে আমরা অতিরিক্ত কোড ছাড়াই সাজানো সাজিয়ে রাখতে পারি)

গণনা মানচিত্রের এন্ট্রিগুলিকে জোড়ের সেট, অনুলিপি (চর, গণনা) থেকে (গণনা, চর) কপি করা হয়। যেহেতু সেটগুলি অর্ডার করা হয়েছে, আমরা কমিয়ে আনা ফ্রিকোয়েন্সি গণনা অনুসারে এগুলি বাছাই করি

পরিশেষে আমরা সেটটির সামগ্রীটি স্ট্যান্ডার্ড আউট, ট্রান্সফর্ম ব্যবহার করে এবং সিলেক্ট 2 তম () ব্যবহার করে অনুলিপি করি এই জুটির দ্বিতীয় সদস্যটি বেছে নেওয়ার জন্য ।

কোডটি মোটামুটি পঠনযোগ্য। একটি সি ++ 11 সমাধানটি খুব সুন্দর দেখায়, যেহেতু আমরা ল্যাম্বডাস ব্যবহার করতে পারি

সি ++ ১১ সংস্করণ - ল্যাম্বডাসের প্রয়োজন নেই, তবে অটো এবং রেঞ্জ ভিত্তিক জিনিসগুলি খুব পরিষ্কার করে তোলে (এটি ভাবেন আপনি নিয়মিত সি ++ 98 এর সাথে খুব অনুরূপ করতে পারেন)

#include<iostream>
#include<iterator>
#include<map>
#include<set>
using namespace std;int main(){istream_iterator<char> b(cin),e;map<char,int> c;set<pair<int,char>> d;for(char i='A';i<='Z';++i){--c[i];}for(auto i=b;i!=e;++i){c[toupper(*i)]--;}for(auto p:c){d.insert(make_pair(p.second,p.first));}for(auto p:d){cout<<p.second;}}

প্রসারিত সংস্করণ:

#include <iostream>
#include <iterator>
#include <map>
#include <set>
using namespace std;
int main()
{
    istream_iterator<char> b(cin), e;
    map<char, int> c;
    set<pair<int, char>> d;
    for(char i = 'A'; i <= 'Z'; ++i) {--c[i];}
    for(auto i = b; i != e; ++i) {c[toupper(*i)]--;}
    for(auto p : c) { d.insert(make_pair(p.second, p.first)); }
    for(auto p : d) { cout << p.second; }
}

পরবর্তী পুনরাবৃত্তি (স্টাডিন থেকে যখন আমাদের আরগভি হয় তখন কেন)

#include <set>
#include <iostream>
int c[256];int main(int n, char **s){std::set<std::pair<int,char>> d;while(*s[1]){c[toupper(*s[1]++)]--;}for(n=65;n<92;++n){d.insert(std::make_pair(--c[n],n));}for(auto p:d){std::cout<<p.second;}}

প্রসারিত সংস্করণ:

#include <set>
#include <iostream>
int c[256];
int main(int n, char **s)
{
    std::set<std::pair<int, char>> d;
    while (*s[1])
    {
        c[toupper(*s[1]++)]--;
    }
    for (n = 65; n < 92; n++)
    {
        d.insert(std::make_pair(--c[n], n));
    }
    for (auto p : d)
    {
        std::cout << p.second;
    }
}

3

জেলি , 9 বাইট (প্রতিদ্বন্দ্বী)

ØAŒuċ¥@ÞU

ব্যাখ্যা

ØAŒuċ¥@ÞU  Main Link
       Þ   Sort
ØA         The uppercase alphabet by
  Œuċ¥@    number of occurrences in the input:
  Œu       Uppercase
    ċ      Count occurrences
     ¥     Grammar: Last two links as a dyad
      @    Swap arguments
        U  Reverse (because sort sorts up)

এটি "বড় আকারের বিপরীত ইনপুটটির সংখ্যার দ্বারা বড় হাতের বর্ণমালা সাজান" হিসাবে পড়ে, যা চ্যালেঞ্জটির বরং আক্ষরিক অনুবাদ: পি

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

এই চ্যালেঞ্জটি জেলি হাইপার ট্রেনিংয়ের সাথে যুক্ত ছিল যেখানে আমরা চ্যালেঞ্জটি সমাধান করেছি। আমি এটি পোস্ট করেছি কারণ আমি প্রথম 10 বাইটে পৌঁছেছিলাম।

-1 বাইট ধন্যবাদ এরিক দি আউটগল্ফারকে (জেএইচটি শিক্ষক)



@ এরিকিউউটগলফার ওহ দুর্দান্ত, ধন্যবাদ!
হাইপারনিউট্রিনো

2

সি ++ 377

অ্যারেতে বর্ণমালা বাছাই করতে অ্যারে এন-তে বর্ণ গণনা ব্যবহার করে কিউসোর্ট কার্যকর করে কমান্ড লাইনের মাধ্যমে চালান: golf.exe < in.txt

int n[26],c,k,N;
char A[26];
int C(const void*a,const void*b)
{
int i=(int)(*(char*)a -'A');
int j=(int)(*(char*)b -'A');
return n[j]-n[i];
}
int main()
{
for(;k<26;k++)
{
A[k]=k+'A';
}
N=sizeof(A);
c=getchar();
while(c>0)
{
c=toupper(c);
c=c-'A';
if(c>=0&&c<26)n[c]++;
c=getchar();
}
qsort(A,N,1,C);
for(k=0;k<N;k++)
{
putchar(A[k]);
}
return 0;
}

2

সি, 117 (119) বাইট

x[256];m=1;char c;main(){while(c=getchar()+1)++x[c-1&95];for(;m=x[++c]<x[m]?m:c;x[m<65|m>90||c?m*!c:putchar(m)]=-1);}
  • ASCII কোড> = 128 থাকা কিছু ইনপুটগুলি ভুলভাবে চিঠির ফ্রিকোয়েন্সি বাড়িয়ে তুলবে। এটি ঠিক করতে, ধ্রুবকটি এর 95সাথে প্রতিস্থাপন করুন223 1 অতিরিক্ত বাইট একটি খরচে।
  • এই হওয়া ASCII কোড 255 সঙ্গে চরিত্র ধারণকারী 1 অতিরিক্ত বাইট, পরিবর্তন খরচে এই সমস্যার সমাধান করতে ইনপুট ভোরে বন্ধ করে দেব char c;শুধু c;এবং ++cকরতে c=c+1%255

2

পাওয়ারশেল - 139 টি চর

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

$a = Read-host
$b = ($a.ToUpper() -replace '[^A-Z]','').ToCharArray() + (65..90|%{[char[]]$_})|Group|sort Count -desc|%{$_.Name}
-join $b

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

$a = Read-host            # read from stdin and save into a string var $a
$a.ToUpper()              # Convert the string to UPPERCASE
-replace'[^A-Z]',''       # Remove all non A-Z characters from the str
(...).ToCharArray()       # Convert the inner object (string) to a Char Array
+  (65..90|%{[char[]]$_}) # Create another char array with A-Z chars expanded, 
                          #  and append it to the previous one.
|Group                    # Group the char array by value for each element, 
                          #  consolidates them and count each char occurrence. Example:
                          #  Count | Name
                          #  ----- | -----
                          #      4 | B
                          #      1 | F
                          #      2 | C 
                          #     .. | ..
                          # 
|sort Count -desc         # Sorts the previous hash-table by the 'Count' column 
                          #   in desc ordering
|%{$_.Name}               # Grab only the 'Name' column from the previous sorted hash-table. 
                          # The retuslt obj will be a simple char array again, 
                          #   with the letters in the desired order
$b = (...)                # Saves the resulting char array into a new variable $b
-join $b                  # join the resulting char array elements into a single 
                          #   string, and print it to stdout. 


2

এপিএল, 26 20 টি অক্ষর

⎕a[⍒+/⎕a∘.=('\w'⎕r'\u0')⍞]

⎕a[⍒+/⎕a∘.=1(819⌶)⍞]

-6 আদমকে ধন্যবাদ।


1
('\w'⎕r'\u0')1(819⌶)
অ্যাডম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.