কোন গো র‌্যাঙ্ক বেশি?


53

Theতিহ্যবাহী বোর্ড গেমের খেলোয়াড়রা র‌্যাঙ্কগুলির একটি পদ্ধতিতে তাদের দক্ষতা পরিমাপ করুন :

  • গেমটিতে নতুন খেলোয়াড় 30 তম কায় (লিখিত 30k) এবং অগ্রগতি 1 ম কেয় (লিখিত ) এ গণনা করা হয় । এগুলিকে শিক্ষার্থী স্থান হিসাবে বিবেচনা করা হয় ।1k
  • একজন খেলোয়াড় 1 ম kyū থেকে 1 ম ড্যান র‌্যাঙ্কে (লিখিত 1d) উন্নীত হতে পারে এবং তারপরে 7 তম ড্যান র‌্যাঙ্ক (লিখিত ) পর্যন্ত গণনা অগ্রগতি করতে পারে । এগুলি হ'ল মাস্টার র‌্যাঙ্কস।7d
  • ব্যতিক্রমী দক্ষ খেলোয়াড়গণ প্রাক্তন পেশাদার ড্যান র‌্যাঙ্কে7d উন্নীত হতে পারে এবং নবম পেশাদার ড্যান র‌্যাঙ্ক (লিখিত ) পর্যন্ত অগ্রগতি গণনা করতে পারে । এটি সর্বোচ্চ পদ। 1p9p

সংক্ষেপে: পদগুলি অর্ডার করা হয় 30k < 29k < ··· < 1k < 1d < 2d < ··· < 7d < 1p < 2p < ··· < 9p

কার্য

মধ্যে দুটি স্ট্রিং দেওয়া { 30k, ..., 1k, 1d, ..., 7d, 1p, ..., 9p} ইনপুট হিসাবে, আউটপুট উচ্চতর দুই পদে। (যদি তারা সমান হয় তবে কেবল ইনপুট আউটপুট দেয়))

(যথারীতি I / O নমনীয় - আপনার উত্তর কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম হতে পারে, কোনও যুক্তিসঙ্গত ফ্যাশনে ইনপুট পড়তে এবং কোনও যুক্তিসঙ্গত ফ্যাশনে আউটপুট উত্পাদন করতে পারে))

এটি : উদ্দেশ্যটি হ'ল আপনার কোডটির বাইট গণনা হ্রাস করা।

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

(ফর্ম্যাট:। input1 input2 output)

29k 9k    9k
21k 27k   21k
6d 1p     1p
5d 17k    5d
1k 1d     1d
1d 1d     1d
1d 2d     2d
9p 1d     9p
2d 30k    2d
1p 1k     1p
1d 1p     1p
1p 2d     1p
7p 8p     8p
30k 30k   30k

ইনপুটগুলিতে নেতৃস্থানীয় শূন্যগুলি প্রয়োজন? অর্থাত 04k
amphibological

6
না; আমি I / O পদ্ধতিগুলি সম্পর্কে নমনীয় থাকাকালীন , আমি ভয় করি যে আমি নিজেই ইনপুট স্ট্রিংগুলিতে কোনও প্রকারভেদ করতে দেব না - আমার মনে হয় এগুলি "আকর্ষণীয়" এর যথাযথ স্তর। (আমি অনুমতি দেবে না 4 kবা 4Kতাই, হয়।)
লিন

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

9
না; আবার, চ্যালেঞ্জের আত্মা হল যথাযথ পাঠ স্ট্রিং নিপূণভাবে 30k, 29k, 1k, 1dইত্যাদি, তাই আমি কোনো প্রকরণ সেখানে অনুমতি দেয় না।
লিন

উত্তর:


36

জাভাস্ক্রিপ্ট (ES7), 58 বাইট

বাক্য গঠন সিনট্যাক্সে দুটি স্ট্রিং নেয় (a)(b)

a=>b=>(g=s=>parseInt(s)*'_dp'.search(s[1])**3)(a)>g(b)?a:b

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

কিভাবে?

সাহায্যকারী ফাংশন ছ () অনুবাদ স্ট্রিং ইনপুট গুলি একটি স্কোর মধ্যে।

1) আমরা "_dp" স্ট্রিংয়ের জন্য [1] সন্ধান করি । এটি দেয়:

  • একটি ড্যান র‌্যাঙ্ক "এক্সডি" এর জন্য 1
  • একটি পেশাদার ড্যান র‌্যাঙ্ক "এক্সপি" এর জন্য 2
  • "Xk " বা "xxk" জন্য একটি কায়িক র‌্যাঙ্কের জন্য -1 কারণ s [1] হয় "কে" বা একটি অঙ্ক

2) আমরা এই ফলাফলটি ঘনক্ষন করি, যা 1 এবং -1 অপরিবর্তিত রয়েছে তবে একটি পেশাদার ড্যান র‌্যাঙ্কের জন্য 8 দেয় ।

3) আমরা র‌্যাঙ্কের দশমিক অংশ দিয়ে গুণ করি।


চতুর হিসাবে নয়, তবে -3:a=>b=>(g=s=>parseInt(s)*~{d:~1,p:~8}[s[1]])(a)>g(b)?a:b
ফায়ারফ্লাই

2
@ ফায়ারফ্লাই ধন্যবাদ তবে ইতিমধ্যে একটি অনুরূপ উত্তর জমা দেওয়া হয়েছিল এবং আমি আরও ভাল করে এই উত্তরটি অপরিবর্তিত রাখি।
আর্নাউল্ড

12

জেলি , 14 বাইট

OṪ|8-2*×ṖV$µÞṪ

একটি মোনাডিক লিঙ্ক স্ট্রিংগুলির একটি তালিকা গ্রহণ করে * (বর্ণিত) যা সর্বাধিক র‌্যাঙ্ক দেয়।

* দুটি ছাড়া অন্য সংখ্যার সাথেও কাজ করে।

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

কিভাবে?

একটি মূল ফাংশন অনুসারে বাছাই করে এবং সঠিকতম (অর্থাত্ সর্বাধিক) প্রদান করে।

, , এবং অক্ষরের যথাক্রমে , এবং অর্ডিনাল রয়েছে । বাইনারি এ আটটি বিট সেট রয়েছে যখন অন্যরা না করে, সুতরাং 8 দিয়ে বিটওয়াইস বা ইন-ইনগানুসারে আমরা যথাক্রমে 107, 108 এবং 120 পাই - এগুলি এখন তাদের চিহ্নিত শ্রেণিগুলিকে বাছাই করার জন্য প্রয়োজনীয় ক্রমে রয়েছে।ডি পি 107 100 112 107kdp107100112107

অপেশাদার র‌্যাঙ্কগুলি ক্রমান্বয়ে ক্রমে রয়েছে যাতে আমাদের মূল ফাংশনটি সম্পূর্ণ করতে আমরা স্ট্রিংয়ে দেওয়া সংখ্যার সাথে আমাদের শ্রেণি-শনাক্তকারীকে যুক্ত করতে পারি, স্ট্রিংটি শেষ হয় কিনা তা উপেক্ষা করে (যেমন -> যখন -> )। কোডে এর জন্য শ্রেণি-শনাক্তকারীকে সঞ্চয় করতে হবে এবং গুণণের জন্য বিয়োগ বিয়োগ করা - - যা বাইট।16k'7k'[107,-7]7p[120,7]OṪ|©8-*×ṖV$®,µÞṪ16

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

OṪ|8-2*×ṖV$µÞṪ - Link: list of lists of characters
           µÞ  - sort by (Þ) the monadic link to the left (µ):
O              -   ordinals
 Ṫ             -   tail
   8           -   literal eight
  |            -   bitwise OR
    -2         -   literal minus two
      *        -   exponentiate
          $    -   last two links as a monad (of the current list of characters):
        Ṗ      -     pop (get all but rightmost character)
         V     -     evaluate as Jelly code (gets the number)
       ×       -   muliply
             Ṫ - tail (get the rightmost)

কী-ফাংশনের ক্রিয়া সারণী ...

in    ṖV$  OṪ   OṪ|8       OṪ|8-2*×ṖV$
30k   30   107  107       -4867778304876400901747340308643840 = ((-2)^107)*30
29k   29   107  107       -4705519028047187538355762298355712 = ((-2)^107)*29
...
 2k    2   107  107        -324518553658426726783156020576256 = ((-2)^107)*2
 1k    1   107  107        -162259276829213363391578010288128 = ((-2)^107)*1
 1d    1   100  108         324518553658426726783156020576256 = ((-2)^108)*1
 2d    2   100  108         649037107316853453566312041152512 = ((-2)^108)*2
 ...
 8d    8   100  108        2596148429267413814265248164610048 = ((-2)^108)*8
 9d    9   100  108        2920666982925840541048404185186304 = ((-2)^108)*9
 1p    1   112  120     1329227995784915872903807060280344576 = ((-2)^120)*1
 2p    2   112  120     2658455991569831745807614120560689152 = ((-2)^120)*2
 ...
 8p    8   112  120    10633823966279326983230456482242756608 = ((-2)^120)*8
 9p    9   112  120    11963051962064242856134263542523101184 = ((-2)^120)*9

খুব সুন্দর পদ্ধতি!
আর্নল্ড

আমি বুঝতে পারছি না যে 14 ইউনিকোড অক্ষর 14 বাইটে কীভাবে অনুবাদ করে। 2^8=256আফিক, যা এএসসিআইআই। ইউনিকোড চরগুলি ধরার জন্য আপনার কি একাধিক বাইটের দরকার নেই?
স্ব স্ব 16

@ পোষ্টসেলফ বাইটকোডটি 14 বাইট, ইউনিকোডের অক্ষরগুলি কেবল একক বাইট উপস্থাপন করে - শিরোলেখের "বাইটস" এর লিঙ্কে কোডপেজটি দেখুন।
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান আহ, আমি দেখছি, আপনাকে ধন্যবাদ!
স্ব স্ব

12

জেলি ,  11  10 বাইট

আবার ড্রইং বোর্ডে ফিরে যেতে অনুপ্রাণিত হয়ে আরনাউল্ড!

⁾kNyv9FµÞṪ

একটি মোনাডিক লিঙ্ক স্ট্রিংগুলির একটি তালিকা গ্রহণ করে * (বর্ণিত) যা সর্বাধিক র‌্যাঙ্ক দেয়।

  • দুটি ছাড়া অন্য সংখ্যা নিয়েও কাজ করে।

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

কিভাবে?

একটি মূল ফাংশন অনুসারে বাছাই করে এবং সঠিকতম (অর্থাত্ সর্বাধিক) প্রদান করে।

মূল ফাংশনটি প্রথমে যে কোনও কে-কে ডায়ডিক অণু ব্যবহার করে এন হয়ে ওঠে y, দ্বি-চরিত্রের তালিকার সাথে অনুবাদ করে ⁾kN(এর জন্য জেলি কোড ['k','N']) এবং তারপরে স্ট্রিংটিকে নয়টি যুক্তি (কোড ব্যবহার করে ) দিয়ে একটি মোনাড হিসাবে মূল্যায়ন করে v9

জেলিতে:

  • N একটি monadic পরমাণু যা এর ইনপুট উপেক্ষা করে

    • সুতরাং কোডটি 9 30Nআসলে নয়টি ব্যবহার করে এবং পূর্ণসংখ্যার ফলাফল-30
  • d একটি ডায়াডিক পরমাণু যা দুটি মানের একটি পাইথন ডিভোডের ফলাফল দেয় - পূর্ণসংখ্যা বিভাগ এবং মডুলোর ফলাফলের জুটি

    • তাই কোড 9 7dফলাফল সঙ্গে যুক্ত করা যা797(mod9)[0,7]
  • p একটি ডায়াডিক পরমাণু যা কার্তেসিয়ান পণ্য সম্পাদন করে, এতে অন্তর্নিহিত ইনপুটগুলির অন্তর্নিহিত 1-সূচিযুক্ত পরিসীমা-আইফিকেশন অন্তর্ভুক্ত থাকে

    • সুতরাং কোডটি 9 p3কারটিশিয়ান পণ্যটি দেয় [1,2,3]এবং [1,2,3,4,5,6,7,8,9]যা[[1,1],[1,2],...,[1,9],[2,1],[2,2],...,[2,9],[3,1],[3,2],...,[3,9]]

এর সাথে তুলনা করার জন্য স্ট্রিংগুলি ব্যবহার করে যেমন মূল্যায়ন সম্পাদন করা হয় তখন আমাদের ফলাফলগুলি তুলনা করতে সক্ষম হতে হবে; যেহেতু সূচিগুলির সাথে তালিকার তুলনা হয় না আমাদের একটি উপেক্ষিত মানগুলিকে একটি তালিকায় মুড়ে ফেলতে হবে, তবে যেহেতু pতালিকাগুলি সমতল হওয়ার পরেও ক্রমটি কার্যকর হবে (উদাহরণস্বরূপ [[1,1],[1,2],...]-> [1,1,1,2]) আমরা Fসমস্ত মূল্যায়নের ক্ষেত্রে প্রয়োগ করা একক-বাইট মোনাদিক পরমাণুটি ব্যবহার করতে পারি ।

নিম্নলিখিত হিসাবে তাদের কী-মান ইনপুট একটি টেবিল:

in    ⁾kNy    ⁾kNyv9F
30k   30N     [-30]
29k   29N     [-29]   
...
 2k    2N     [-2]
 1k    1N     [-1]
 1d    1d     [0,1]
 2d    2d     [0,2]
 ...
 6d    6d     [0,6]
 7d    7d     [0,7]                                 
 1p    1p     [1,1,1,2,...,1,9]
 2p    2p     [1,1,1,2,...,1,9,2,1,...,2,9]
 ...
 8p    8p     [1,1,1,2,...,1,9,2,1,...,7,9,8,1,...,8,9]
 9p    9p     [1,1,1,2,...,1,9,2,1,...,7,9,8,1,...,8,9,9,1,...,9,9]

কোড মন্তব্য:

⁾kNyv9FµÞṪ - Link: list of lists of characters
       µÞ  - sort by (Þ) the monadic link to the left (µ):
⁾kN        -   two-char list = ['k', 'N']
   y       -   translate the current string (change 'k's to 'N's)
     9     -   literal nine
    v      -   evaluate (the left) as Jelly code with the input as given on the right (9)
      F    -   flatten the result
         Ṫ - tail (get the rightmost, and hence (a) maximum)

আমি জানতাম এটা ঘটতে হবে। :) তবে আমি প্রায় 90 মিনিটের জন্য আপনাকে ছাড়িয়ে যেতে পেরে সন্তুষ্ট। : পি
আর্নল্ড

শুরুতে আমার মনে আসা এমন একটি অ্যাভিনিউ অন্বেষণ না করার জন্য আমি এখনও কিছুটা নির্বোধ বোধ করি!
জোনাথন অ্যালান

এটি সত্যিই ঝরঝরে উত্তর!
লিন

10

এমএটিএল , 30 28 25 23 বাইট

,0&)Uw'k'-tUw6*+qw*w]<G

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

(-২ বাইট লুইস মেন্ডোকে ধন্যবাদ)
( লুইস মেন্ডোর জবাবের ভিত্তিতে এবার v&X>আরও একটি -৩ বাইট প্রতিস্থাপন >)
( &)সিনট্যাক্স ব্যবহার করে -২ বাইট )

ব্যাখ্যা:

  • শেষ অক্ষর থেকে 'কে' বিয়োগ করুন ('ডি', 'কে', 'পি' এর জন্য যথাক্রমে n = -7, 0, 5 দেয়)।

  • গণনা v = n ^ 2 + 6n-1 (যথাক্রমে 7, -1, 54 দেয়)

  • প্রকৃত র‌্যাঙ্ক সংখ্যার মাধ্যমে সেই মান v কে গুণিত করুন (সুতরাং কে স্তরগুলি নেতিবাচক পণ্য পায়, ডি স্তরগুলি 7 থেকে 49, পি স্তর 54 এবং তারপরের থেকে উপরে যায়)।

  • উভয় ইনপুট স্ট্রিংয়ের জন্য এটি করুন, পণ্যগুলির তুলনা করুন

  • বৃহত্তর পণ্যের সাথে সম্পর্কিত ইনপুট স্ট্রিং পান


বিকল্প, আরও সহজ পদ্ধতি::

23 বাইট

,0&)Uwo'dpk'1L6^XE*w]<G

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

,              % Do this twice (once for each input):
0&)            % Split the input into number, last letter
U              % str2num i.e. Convert '21' to 21
wo             % Bring the letter out and change it to numeric (its ASCII code)
'dpk'          % Push the array 'dpk'
1L6^           % Push [1 2 1j] and raise to ^6, giving [1 64 -1]
XE             % Find the letter in 'dpk', replace it with its corresponding 
               %  number from the second array (d=1, p=64, k=-1)
*              % Multiply the number part by this
w              % Switch to bring out the other input to top
]              % End loop
               % Stack has [second input's value, first input's value]
<              % Is second input < first input? 1 or 0
G              % Retrieve the corresponding input: 1 for 1st input,
               %  0 for last (2nd) input


1
সুতরাং এখন আমাদের কাছে আরনাউল্ডের অ্যালগরিদম এবং সূন্দর বহুপদী পদ্ধতি রয়েছে। বাহ। +1
ডেভিড কনরাড

9

হাস্কেল , 73 71 বাইট

r(x,"k")=0-x
r(x,"d")=x
r(x,"p")=x+7
p=r.head.reads
a#b|p a<p b=b|0<1=a

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

আমার জন্য যথারীতি, বিশেষত গল্ফ-ওয়াইয়ের চেয়ে কেবল একটি সরাসরি এগিয়ে বাস্তবায়ন। "(#)" ফাংশনটি স্ট্রিং হিসাবে দুটি পদক্ষেপ নেয় এবং বৃহত্তরটিকে প্রদান করে। শুধুমাত্র প্রশ্নের নির্দিষ্ট বিন্যাসে কাজ করে।

(আমি এটি ব্যবহার করেও একটি সংস্করণ চেষ্টা করেছি comparingএবং maximumByতবে এটি 3 বাইটের বেশি দীর্ঘ হতে পারে - আপনাকে baseএবং আপনার মাঝে মাঝে মানুষের পঠনযোগ্য ফাংশনগুলির নামকে অভিশাপ দেয়!)

(উভচর এবং লিন দ্বারা প্রয়োগ পরামর্শ)


আপনি পরিবর্তন করে 1 বাইট সংরক্ষণ করতে পারবেন Trueকরার 1<2
উভচর

1
(-x)হতে পারে 0-x
লিন

আপনি চূড়ান্ত প্যাটার্ন ম্যাচটিও এতে পরিবর্তন করতে পারেন r(x,_)=x+7!
লিন

আপনি চূড়ান্ত প্যাটার্ন ম্যাচটি পরিবর্তন করতে ভুলে গেছেন, এটি 69 হওয়া উচিত (এটিও 0-x`-x be হতে পারে)
এএসসিআইআই-

8

পাইথন 2 , 54 বাইট

lambda s:max(s,key=lambda x:(int(x,27)%9-3)*int(x,26))

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

আরনাউল্ডের পদ্ধতি ব্যবহার করে । ম্যাপিংটি int(x,27)%9-3কেবলমাত্র সর্বশেষের অক্ষরের উপর নির্ভর করে x, যেহেতু সমস্ত অঙ্কগুলি কিন্তু শেষটি একটিতে একাধিক অবদান রাখে 9। লাগবে:

'k' -> -1
'p' -> 1
'd' -> 4

এই সংখ্যাটি 26 টিতে ব্যাখ্যার পরে সর্বোচ্চ গুণমানের র‌্যাঙ্কটি 1pবীট করার জন্য এটি কেবলমাত্র যথেষ্ট পরিমাণের মার্জিন 7d

আমি এই ফর্মটি এবং আরও কয়েকজনকে জোর করে জোর করে প্রকাশ করে এটি পেয়েছি found


পাইথন 2 , 64 বাইট

lambda s:max(s,key=lambda x:(ord(x[-1])|8,int(x,36)^-('k'in x)))

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


6

আর , 73 বাইট

function(v)v[rank(as.double(chartr('dp','.0',sub('(.+)k','-\\1',v))))][2]

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

  • এর as.doubleপরিবর্তে আমাকে ব্যবহার করতে হয়েছিল strtoiযেহেতু পরের স্থানগুলি / পয়েন্টগুলি পরিচালনা করে না এবং প্রতিস্থাপনের জন্য আমি অন্য কোনও বৈধ চরিত্রের কথা ভাবতে পারি নাd
  • rankপরিবর্তে -1 বাইট ব্যবহার করে order, যেহেতু যখন দুটি মাত্র উপাদান থাকে তখন তারা সমান হয়

আমি তার Lজায়গায় ব্যবহারের চেষ্টা করেছি .কিন্তু এটিও কাজ করছে না ... আমি অন্য কিছু খুঁজে পেতে পারলে আপনাকে জানাতে দেব।
জয়সি

1 কে অভিনন্দন!
জিউসেপে

6

জেলি , 13 বাইট

এটি আমার অন্যান্য জেলি উত্তর থেকে একেবারে আলাদা , তাই আমি এটি আলাদাভাবে পোস্ট করছি।

দুটি (বা আরও) স্ট্রিংয়ের তালিকা হিসাবে ইনপুট নেয়।

“kNdHp0”yVµÞṪ

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

মন্তব্য

“kNdHp0”yVµÞṪ
“kNdHp0”       - literal string
        y      - translate each rank character into a Jelly instruction/symbol:
                   'k' -> 'N' = negate
                   'd' -> 'H' = halve
                   'p' -> '0' = a literal zero
         V     - evaluate as Jelly code
                 examples:
                   '21k' -> '21N' -> -21
                   '7d'  -> '7H'  -> 3.5  (*)
                   '3p'  -> '30'  -> 30
          µÞ   - sort the input using all of the above
            Ṫ  - return the second entry

(*) we don't really need to halve these values, but we do want to get rid of 'd'

ওহে মানুষ, আমি যে পথে যাচ্ছিলাম, সেখান থেকে নামার আগে আমি ঠিক এই জাতীয় পদ্ধতি সম্পর্কে ভেবেছিলাম ... সত্যিই আমার এটি চেষ্টা করা উচিত ছিল!
জোনাথন অ্যালান

... এখন আমার 11
জোনাথন অ্যালান

5

জুলিয়া 0.7 100 93 বাইট

এটি সবচেয়ে কার্যকর উপায় নয়, (বিপরীতে @ সানডারের জুলিয়া ০.ia উত্তর ) তবে এটি দুর্দান্ত কারণ এটি নিখুঁতভাবে সংখ্যাসূচক। প্রেরণও ব্যবহার করে (যদিও দুঃখজনকভাবে কেবল একবারেই)

!z=(-z%2+.9)z*z
s(x,y,z)=(10x+y)*!z
s(x,z)=x*!z
~r=s(Int[r...]...)
a|b=[a,b][argmax(.~[a,b])]

খুব অনুরূপ কোড 0.6 এ কাজ করে এটি অনলাইনে চেষ্টা করুন

কিভাবে:

কৌশলটি সমস্ত !(z)ফাংশনে রয়েছে।

এটি ইউটিএফ -8 মানটিকে মানচিত্র করে:

  • জন্য kএকটি ঋণাত্মক সংখ্যা মধ্যে, তাই এটি পিছন বাছাই করে
  • জন্য dএকটি ধনাত্মক সংখ্যা মধ্যে
  • জন্য pএকটি বৃহত্তর ধনাত্মক সংখ্যা মধ্যে

হিসাবে দেখানো হয়েছে:

julia> !(Int('k'))
-1144.8999999999996

julia> !(Int('d'))
9000.0

julia> !(Int('p'))
11289.6

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

julia> @testset "Check it" begin
               @test "29k" | "9k" == "9k"
               @test "21k" | "27k" == "21k"
               @test "6d" | "1p" == "1p"
               @test "5d" | "17k" == "5d"
               @test "1k" | "1d" == "1d"
               @test "1d" | "1d" == "1d"
               @test "1d" | "2d" == "2d"
               @test "9p" | "1d" == "9p"
               @test "2d" | "30k" == "2d"
               @test "1p" | "1k" == "1p"
               @test "1d" | "1p" == "1p"
               @test "1p" | "2d" == "1p"
               @test "7p" | "8p" == "8p"
               @test "30k" | "30k" == "30k"
       end
Test Summary: | Pass  Total
Check it      |   14     14
Test.DefaultTestSet("Check it", Any[], 14, false)

এটি বেশ ঝরঝরে। এবং আমি জানতাম না .~[a,b]সম্ভব! বিটিডব্লু, আমি মনে করি আপনি সংগ্রহ (র) এর সাথে প্রতিস্থাপন করতে পারেন [r...]এবং কয়েকটি বাইট সংরক্ষণ করতে পারেন ।
সুন্দরের

ভাল, এবং তারপরে আমি আরও কিছু বাঁচানোর Int[r...]চেয়ে বরং ভাল Int([r...])। ধন্যবাদ
লিন্ডন হোয়াইট

উপায় দ্বারা, কোড প্রায় কাছাকাছি কাজ করে হিসাবে (প্রতিস্থাপন পরে argmaxসঙ্গে indmaxজুলিয়া 0.6 পাশাপাশি)। আপনি এটি একটি অনলাইন চেষ্টা করে অন্তর্ভুক্ত করতে পারেন ! আপনি যদি চান লিঙ্ক।
সুন্দর

ধন্যবাদ, আমার অন্যান্য সাম্প্রতিক জুলিয়া ০.7 উত্তরগুলি এর চেয়ে খারাপ হ্রাস এড়াতে অনেক বেশি ভোগ করেছে।
লিন্ডন হোয়াইট

হ্যাঁ, জিনিসগুলি প্রয়োজনীয় কীওয়ার্ড আরগস, স্টাডলিব মুভেসগুলি আমদানি, প্রয়োজনীয় শ্বেত স্পেস ইত্যাদির সাহায্যে আরও একটি ভার্জিক দিকের দিকে এগিয়ে চলেছে বলে মনে করে বিটিডব্লু, আপনি কি ০. answer উত্তর হিসাবে পোস্টিং শেষ করেছেন এমন 0.7 উত্তর চেষ্টা বলতে চাইছেন? আমি আপনার ব্যবহারকারীর পৃষ্ঠা থেকে এক নজরে দেখেছি, কিন্তু কোনও জুলিয়া ০.7 উত্তর খুঁজে পাইনি।
সূর্য

5

হাস্কেল , 64 বাইট

r[(n,[c])]=n*(gcd(fromEnum c)28-3)
g=r.reads
a%b|g a>g b=a|1>0=b

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

অভিব্যক্তিটি gcd(fromEnum c)28-3চরিত্রটিকে একটি গুণককে মানচিত্র করে

k -> -2
d -> 1
p -> 25

ধারণাটি ছিল তাদের চরিত্রের মানগুলি গ্রহণ করা [107,100,112]এবং তাদের 28সাথে ক্রমবর্ধমান বৃহত কারণগুলি সাধারণভাবে বেছে নেওয়া সহজ, তবে প্রথমটি 107 প্রধান। এই পদ্ধতিটি ম্যাপিং স্পষ্টভাবে লেখার চেয়ে 2 বাইট সংরক্ষণ করে ।

অন্তর্নির্মিত readsনম্বর এবং র‌্যাঙ্ক পৃথক করতে ব্যবহৃত হয়।

Prelude> reads "25k" :: [(Int, String)]
[(25,"k")]

(প্রকৃতপক্ষে, সারা জে থেকে সরাসরি বিভাজনটি একটি বাইট সংক্ষিপ্ত, giving৩ বাইট দেয় ))

বড়-এক-পদক্ষেপটি আমার দ্রবণে বিরক্তিকর সংখ্যক বাইট নেয় number আমি অন্যান্য পদ্ধতির চেষ্টা করেছি যেমন ক্রমকে হ্রাস করে ক্রম ঘটাতে এবং প্রথমটির একটি উপাদান যা প্রথমে নেওয়া [a,b], কিন্তু সেগুলি আরও দীর্ঘস্থায়ী হয়েছিল।


3

এমএটিএল , 28 27 বাইট

,w'kdp'X{'*-1 . *8'YbYXU]>G

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

ব্যাখ্যা

,                % Do twice
  w              %   Swap. Takes implicit input
  'kdp'          %   Push this string
  X{             %   Split chars: gives cell array {'k', 'd', 'p'}
  '*-1 . *8'     %   Push this string
  Yb             %   Split at whitespace: gives cell array {'*-1', '.', '*8'}
  YX             %   Regexprep: replaces 'k' by '*-1', 'd' by '.', 'p' by '*8'
  U              %   Convert to number: evaluates string
]                % End
>                % Greater than? Gives a result r which is 0 or 1
G                % Push r-th input (modularly: 0 is last, 1 is first)

3

জেলি , 16 বাইট

দুটি স্ট্রিংয়ের তালিকা হিসাবে ইনপুট নেয়।

OṪ²²%90’’×ṖV$µÞṪ

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

কিভাবে?

র‌্যাঙ্ক চরিত্রের ASCII কোড নিম্নলিখিত সূত্রের সাহায্যে একক রূপান্তরিত হয়েছে :মিcm

m=(c4mod90)2

যা দেয়:

 char. | ASCII | **4       | mod 90 | -2
-------+-------+-----------+--------+----
  'k'  |   107 | 131079601 |      1 | -1
  'd'  |   100 | 100000000 |     10 |  8
  'p'  |   112 | 157351936 |     76 | 74

মন্তব্য

OṪ²²%90’’×ṖV$µÞṪ
OṪ²²%90’’        - process the rank character        takes a string, e.g. '28k'
O                - get ASCII codes                   --> [50, 56, 107]
 Ṫ               - pop                               --> 107
  ²²             - square twice                      --> 131079601
    %90          - modulo 90                         --> 1
       ’’        - decrement twice                   --> -1
          ṖV$    - process the decimal part
          Ṗ      - remove the last character         --> '28'
           V     - evaluate as Jelly code            --> 28 (integer)
         ×       - multiply                          --> -28
             µÞ  - sort input using all of the above
               Ṫ - return the second entry

বিকল্প সূত্র

পাশাপাশি 16 বাইটের জন্য, আমরা ব্যবহার করতে পারি:

m=((c1)9mod64)1
OṪ’*9%64’×ṖV$µÞṪ

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


3

জাভাস্ক্রিপ্ট (ES6), 55 54 বাইট

-১ বাইট @ শ্যাগিকে ধন্যবাদ

a=>b=>(s=x=>parseInt(x)*~-{p:9,d:2}[x[1]])(a)>s(b)?a:b

অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা

a=>b=>
  (s=x=>                 // Function s(x), that converts x to a "score", where a higher
                         // rank gets a higher score by
    parseInt(x)*         //   taking the integer part of x and multiplying it by
    ~-{p:9,d:2}[x[1]])  //   ~-9 (8) if it is a professional rank, ~-2 (1) if it is a dan
                         //   rank and ~-undefined (-1) if it is a kyū rank by looking up
                         //   the second character of the string
  (a)>s(b)               // Compare s(a) and s(b)
    ?a:b                 //   and return the one with the biggest score

এটি 54 এর জন্য কাজ করছে বলে মনে হচ্ছে
শেগি

@Shaggy আপনার সমাধান ব্যর্থ f("2d")("1d"), কিন্তু প্রতিস্থাপন d:1সঙ্গে d:2এটি সংশোধন করা হয়েছে।
হারমান এল

1
এটি গল্ফ করার চেষ্টা করুন, তবে এখনও 54 বাইট ... এত দুঃখজনক
tsh

3

রুবি , 52 46 বাইট

->s{s.max_by{|x|(5-x[-1].ord*5%8)*x.to_i(26)}}

এক্সনরের উত্তরের সোজা বন্দর।

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

সম্পাদনা করুন: -6 বাইট বুঝতে পেরে আমি কোনও প্রক ব্যবহার করতে পারতাম


আপনি সবেমাত্র পরিবর্তনটি সম্পর্কে মন্তব্য করতে চলেছিলেন :) আপনাকে এখানে কোডটি নকল করতে হবে না, কেবল
শিরোনামটি

3

সি # (ভিজ্যুয়াল সি # কম্পাইলার) , 136 135 বাইট

a=>b=>{string c=a.PadLeft(3,'0'),d=b.PadLeft(3,'0');int x=c[2]-d[2];return(x==0?c.CompareTo(d)*(c[2]=='k'?-1:0)>0:x==5|x>9|x==-7)?a:b;}

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

-1 বেলথ থেলথেলকোডারকে ধন্যবাদ

Expanation:

static void Main()
{
    System.Func<string, System.Func<string, string>> f =
        a => b =>
        {
            string c = a.PadLeft(3, '0'),
                d = b.PadLeft(3, '0');      //Pad the input with leading '0' to be 3 characters long
            int x = c[2] - d[2];            //Calculate the difference of the letter characer (the character at index 2) as integer
            return                          //return ...
                (x == 0 ?                   //if the letter of the inputs is the same...
                c.CompareTo(d)              //  compare the padded strings resulting in a positive number if the first input is greater or a negative number if the first input is lower 
                    * (                     //  multiply the result by...
                    c[2] == 'k' ? -1 : 0    //  if the letter is 'k' then -1 else 0
                    ) > 0                   //  check if the result is greater than 0
                :                           //else (the letters are not the same)
                x == 5 | x > 9 | x == -7    //  check if the letter difference was 5 (input p and k) or 12 (> 9, input p and d) or -7 (input d and k)
                ) ? a : b;                  //  then return the first input else return the second input.
        }
    ;

    System.Console.WriteLine(f("29k")("9k"));
    System.Console.WriteLine(f("21k")("27k"));
    System.Console.WriteLine(f("6d")("1p"));
    System.Console.WriteLine(f("5d")("7k"));
    System.Console.WriteLine(f("1k")("1d"));
    System.Console.WriteLine(f("1d")("1d"));
    System.Console.WriteLine(f("1d")("2d"));
    System.Console.WriteLine(f("9p")("1d"));
    System.Console.WriteLine(f("2d")("30k"));
    System.Console.WriteLine(f("1p")("1k"));
    System.Console.WriteLine(f("1d")("1p"));
    System.Console.WriteLine(f("1p")("2d"));
    System.Console.WriteLine(f("7p")("8p"));
    System.Console.WriteLine(f("30k")("30k"));
}

1
আপনি তরকারী হিসাবে বাইট সংরক্ষণ করতে পারেন a=>b=>
TheLethalCoder

ওহ এছাড়াও আপনি আক্ষরিক অক্ষরের পরিবর্তে ints ব্যবহার করতে সক্ষম হওয়া উচিত। কিছুক্ষণ হয়ে গেছে যখন আমি গল্ফ করেছি তাই এগুলি আমার কাছে আসতে থাকবে ...
TheLethalCoder

@ দ্য লেথলকোডার: এর পরিবর্তে PadLeftপ্রয়োজন charএবং ব্যবহারের ফলে কোনও পার্থক্য নেই। 107'k'
রাজনগুল

ওহ আমি ভেবেছিলাম যে এই রূপান্তরটি অন্তর্নিহিত ... যদিও চেষ্টা করে দেখার মতো
TheLethalCoder

3

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

s/p/0/g;s/\w*k/-$&/g;/ /;$_=@F[$`<=$']

হিসাবে চালান perl -pae '...'। স্টিডিন থেকে ইনপুট নেয়, এক লাইনে স্পেস-বিভক্ত।

"তুলনামূলক সহজ" করার জন্য বেশ কয়েকটি বিকল্পগুলি সম্পাদন করে। Regexp বিকল্পগুলি মূলত pএকটি পিছনে শূন্য এবং kএকটি নেতৃস্থানীয় নেতিবাচক চিহ্ন সহ প্রতিস্থাপনের পরিমাণ । সুতরাং 10kহয়ে যায় -10(সুতরাং ক্রমটি বিপরীত হয়) এবং 3pহয়ে যায় 30(যাতে এটি pঅন্য সমস্ত কিছুর .র্ধ্বে)। তারপরে এটি কেবল একটি সাধারণ সংখ্যা তুলনা।

$`/ $'পরামর্শের জন্য ডোমহাস্টিংসকে ধন্যবাদ , যা 8 বাইট বন্ধ করে দিয়েছে।


1
সত্যিই দুর্দান্ত সমাধান, আমি এত এত মার্জিত কিছু নিয়ে আসিনি! 8 / /`$` `` এর সাথে ম্যাচ করে এবং ব্যবহার করে আপনি 8 বাইট সংরক্ষণ করতে পারেন এবং $': অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস

3

আর , 65 62 বাইট

`+`=paste0;max(ordered(scan(,""),c(30:1+"k",1:7+"d",1:9+"p")))

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

এটি পূর্ববর্তী আর উত্তরগুলির চেয়ে কিছুটা সংক্ষিপ্ত আকারে আসে এবং আর এর পরিসংখ্যান কার্যকারিতা :-) এর ভাল ব্যবহার করে

-3 বাইট পরিবর্তে রবিন রাইডারের ব্যবহারের পরামর্শের জন্য ধন্যবাদordered factor

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

আউটপুট দেখে মনে হচ্ছে:

[1] MAX_RANK
46 Levels: 30k < 29k < 28k < 27k < 26k < 25k < 24k < 23k < 22k < ... < 9p

1
ফ্যাক্টরের পরিবর্তে অর্ডার (...) সহ 62 বাইট (..., ও = টি)
রবিন রাইডার

@ রবিনরাইডার ধন্যবাদ! আমি ডক্স পৃষ্ঠার মাধ্যমে পড়েছি factorএবং পুরোপুরি মিস করেছি ordered
জিউসেপে

3

জাভা 8, 128 122 121 বাইট

a->b->g(a)<g(b)?b:a;float g(String s){return("kdp".indexOf(s.charAt(s.length()-1))-.9f)*new Byte(s.replaceAll(".$",""));}

-6 ধন্যবাদ বাইট @SaraJ

এটি অনলাইনে চেষ্টা করুন। (ম্যাপযুক্ত মানগুলি দেখতে টিআইও-লিঙ্কগুলিতে আউটপুটটির নীচের অংশটি দেখুন))

ব্যাখ্যা:

a->b->                       // Method with two String parameters and String return-type
  g(a)<g(b)?                 //  If the mapped value of `a` is smaller than `b :
   b                         //   Return input `b` as result
  :                          //  Else:
   a;                        //   Return input `a` as result

float g(String s){           // Separated method with String parameter and float return-type
                             // (This method maps all possible Strings to a value)
 return("kdp".indexOf(       //   Take the (0-based) index in the String "kdp"
    s.charAt(s.length()-1))  //   of the last character
    -.9f)                    //   After we've subtracted 0.9
  *(                         //  And multiply it with:
    new Byte(                //   Convert the String to an integer
     s.replaceAll(".$",""));}//   After we've removed the trailing character


@ সরজ ধন্যবাদ! :) একটি সংক্ষিপ্ত বিকল্প খুঁজে পেতে আমার সমস্যা হয়েছিল, তবে আমি নিশ্চিত ছিলাম যে কিছু হওয়া উচিত। খুব মজার বিষয় ছিল আমি তিনটি বিকল্প 128-বাইটার খুঁজে পেয়েছি, তবে কোনটিই ছোট নয় ..
কেভিন ক্রুইজসেন

3

হাস্কেল , 75 70 68 বাইট

g k=read(init k)*(abs(fromEnum(last k)*2-209)-8)
a?b|g a>g b=a|1>0=b

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

-5 bytes
-2 bytes@ লাইকোনিকে ধন্যবাদ কেবলমাত্র ASCII- এর জন্য ধন্যবাদ


1
(read$init k)হতে পারে read(init k)। একটি সহায়ক ফাংশন ব্যবহারের চেয়ে কম হয় case of: এটি অনলাইনে চেষ্টা করুন!
লাইকোনি

@ লাইকনি ধন্যবাদ!
সারা জে


@ এএসসিআইআই-কেবল নিস, ধন্যবাদ!
সারা জে

1
@ সারাজ আপনি লিঙ্কটি আপডেট করেননি: পি
এএসসিআইআই-

2

পাইথন 2 , 61 বাইট

আরনাউল্ডের অ্যালগরিদম ব্যবহার করে।

lambda c:max(c,key=lambda i:'_dp'.find(i[-1])**3*int(i[:-1]))

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


পূর্ববর্তী উত্তর, 73 বাইট

lambda c:max(c,key=lambda i:('dp'.find(i[-1]),int('-'*('k'in i)+i[:-1])))

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


2

জুলিয়া 0.6 , 75 71 65 বাইট

S->S[indmax((s->parse(s[1:end-1])*(search("_dp",s[2])-1)^3).(S))]

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

(-4 বাইট, 0.6 অটোকে বিশ্লেষণ করে এটি আন্ত হিসাবে সনাক্ত করে)

(-6 বাইট, (search("_dp",s[2])-1)^3)এর পরিবর্তে আরনুল্ডের জেএস উত্তরের উপর ভিত্তি করে ব্যবহার করুন ((c=cmp(s[end],'k'))^2*6+4c-1))


2

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

O$^`.+((k)|(.))
$3$&$*1$2
1G`

এটি অনলাইন চেষ্টা করুন! যে কোনও সংখ্যক পদক্ষেপ গ্রহণ করে এবং সর্বোচ্চ আউটপুট দেয়। ব্যাখ্যা:

O`

লাইনগুলি বাছাই করুন ...

$

... নির্দিষ্ট কী ব্যবহার করা হচ্ছে ...

^

... বিপরীত ক্রমে।

.+((k)|(.))
$3$&$*1$2

নিম্নলিখিতটি ইনপুট লাইন থেকে তৈরি করা হয়েছে: ক) (পেশাদার) ড্যান র‌্যাঙ্ক লেটার খ) আনারিতে র‌্যাঙ্ক গ) কাই চিঠি (যেখানে প্রযোজ্য)। যেহেতু এটি একটি বিপরীত সাজান, পেশাদার ড্যান র‌্যাঙ্কটি ড্যান র‌্যাঙ্কের pআগে dসাজায় এবং কাই র‌্যাঙ্ক যা শুরু হয় 1কারণ কাই অক্ষরটি শেষে রয়েছে। র‌্যাঙ্কের মধ্যে (পেশাদার) ড্যান kর‌্যাঙ্কটি আনারি স্ট্রিংয়ের দৈর্ঘ্যের কারণে অবতরণ ক্রমে বাছাই করে, তবে কাই র‌্যাঙ্কগুলি অনুসরণ করে তাদের ক্রমবর্ধমান ক্রম অনুসারে বাছাই করে।

1G`

প্রথম লাইনটি নির্বাচন করুন, যা এখন সর্বশ্রেষ্ঠ র‌্যাঙ্ক।


2

জে, 39 বাইট

[`]@.(<&(".@}:((*_1&^)+]*0=2&|)a.i.{:))

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

ব্যাখ্যা

[`]@.(<&(".@}: ((* _1&^) + ] * 0 = 2&|) a. i. {:))    entire phrase
[`]@.(<&(       assign a rank number            ))
      <&                                              "less than" of the ranks of the left and right args
                                                      ie, return 1 if right arg rank is bigger
[`]@.                                                 if so, return right arg.  otherwise left
                                                      breaking down the rank number part now...
        (       assign a rank number            )
        (".@}: ((* _1&^) + ] * 0 = 2&|) a. i. {:)
        (".@}:                                  )     everything but last char, convert to number
        (                               a. i. {:)     index within ascii alphabet of the last char
                                                      these become the left and right args to what follows...
        (      ((* _1&^) + ] * 0 = 2&|)         )
        (      (           ] * 0 = 2&|)         )     the right arg * "is the right arg even?"
                                                      because only 'k' is odd (107), this will be 0 for 'k'
                                                      and will be 100 for 'd' and 112 for 'p'
        (      ((* _1&^)              )         )     left arg (number of go rank) times _1 raised
                                                      to the ascii index.  this will swap the sign
                                                      for k only, hence producing a valid rank function

2

পাইথন , 59 বাইট

lambda s:max(s,key=lambda x:(-2)**(ord(x[-1])|8)*int(x,26))

স্ট্রিংগুলির একটি পুনরাবৃত্তযোগ্য গ্রহণযোগ্য একটি নামহীন ফাংশন যা গো র‌্যাঙ্কে সর্বাধিক এক প্রদান করে। আমার জেলি উত্তরের মতো অনেকগুলি কাজ করে (বাইটগুলি সাশ্রয় করতে কেবল 26 টি বেসে পূর্ণসংখ্যা হিসাবে মূল্যায়ন করা পুরো স্ট্রিংটি ব্যবহার করে)।

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



2

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

*.max: {{+TR/pd/0 /}(S/(.+)k/-$0/)}

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

এই সমস্ত অনুসন্ধান এবং কিউব স্টাফের পরিবর্তে পৃথক পদ্ধতি। মূলত স্ট্রিং রিপ্লেসমেন্ট: ...k -> -..., p -> 0, dমোছা হয়েছে। সুতরাং newbies একটি বিয়োগ স্কোর পায়, dans তাদের র‌্যাঙ্ক এবং পেশাদারদের র‌্যাঙ্ক * 10 পেয়েছে get যাইহোক স্টার ব্যবহার করে আমাদের বন্ধ হয়ে যায়, এবং maxএকটি তুলনামূলক ফাংশন নেয়।


2

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

Σ'pK°.Vyþ*}θ

.V(05AB1E কোড হিসাবে মূল্যায়ন করুন) তার জেলি উত্তরে @ আর্নল্ডের অনুরূপ পদ্ধতির দ্বারা অনুপ্রাণিত হয়েছেন

বৈধ স্ট্রিংয়ের দুটি (বা আরও) এর তালিকা হিসাবে ইনপুট দিন।

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

ব্যাখ্যা:

Σ           # Sort the (implicit) input-list by:
 'pK       '#  Remove "p"
    °       #  Take 10 to the power this string
            #  (if the string is not a valid number, the string remains unchanged)
     .V     #  Evaluate the string as 05AB1E code
       yþ*  #  Multiply it with just the digits of the string
          # After the sort: pop and push the last element
            # (which is output implicitly as result)
  • k"30k""1k"-1[30,1]
  • d>= 0"1d""7d"1[1,7]
  • p°aaaa"2k""2d""2k""2d"°"2"p°100"1p""9p"[10,200,3000,40000,500000,6000000,70000000,800000000,9000000000]

সমস্ত মানচিত্র মান এখানে দেখুন।


2

স্কালা , 307 61 54 বাইট

কেভিন ক্রুজিসেন এবং এএসসিআইআই-কে কেবল এই উত্তরে তাদের কাজের জন্য দারুণ ধন্যবাদ , এটি ~ 250 বি ডলারে নেমেছে।

61 বি উত্তরের ক্রিয়াকলাপের জন্য কিছু অ্যালগরিদম অপ্টিমাইজেশন।

l=>l.maxBy(s=>s.init.toInt*(math.abs(s.last*2-209)-8))

পরীক্ষার কেসগুলি এখানে: এটি অনলাইনে চেষ্টা করুন!

পুরানো 61 বাইট উত্তর

l=>l.maxBy(s=>(s.init.toInt+s.last)*(math.abs(s.last-105)-3))

কৌশলটি হ'ল rank letterএবং i(চর কোড 105) এর মধ্যে দূরত্ব গণনা করা । তারপরে আমরা এই দূরত্বটিকে স্কোর হিসাবে ব্যবহার করি ( ডান = 5, কিউ = 2, প্রো = 7) যা আমরা র‌্যাঙ্ক সংখ্যায় গুণ করি। তারপরে আমরা স্কোরিং ফাংশনটি ব্যবহার করে ইনপুট অ্যারে সর্বাধিক গ্রহণ করি।

অনলাইনেও চেষ্টা করে দেখুন!


2
@ ভি.কোর্তোস আপনি হেডারে টাইপিং যুক্ত করতে পারেন
এএসসিআইআই-

1
কেবলমাত্র @ ASCII- হিসাবে উল্লিখিত হয়েছে, আপনি এটির সাথে এটি দিয়ে তৈরি করতে পারেন var f: Function1[String, Function1[String, String]]=247 বাইট
কেভিন ক্রুজসসেন




2

পিএইচপি , 100 98 বাইট

(-2 ফাংশন ঘোষণা পরিবর্তন করে বাইট)

<?function f($v){return(strpos('!!dp',$v[1])-1)**3*$v;};list(,$a,$b)=$argv;echo f($a)>f($b)?$a:$b;

এটি চালানোর জন্য:

php -n <filename> <rank1> <rank2>

উদাহরণ:

php -n go_rank.php 1p 7d

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


পিএইচপি (7.4), 74 বাইট

$g=fn($v)=>(strpos(__dp,$v[1])-1)**3*$v;$f=fn($a,$b)=>$g($a)>$g($b)?$a:$b;

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


কিভাবে?

অনুরূপ Arnauld এর পদক্ষেপ , কিন্তু পিএইচপি। আমি প্রতিটি র‌্যাঙ্ককে একটি সংখ্যাসূচক মানে রূপান্তর করতে এবং উচ্চতর মানের সাথে তুলনা এবং আউটপুট দেওয়ার জন্য একটি ফাংশন ব্যবহার করছি।

র‌্যাঙ্কের মান ইনপুট স্ট্রিংয়ের দ্বিতীয় চরিত্রের অবস্থান থেকে আসে !!dp, এটি একটি দ্বারা কমে যায় এবং তারপরে 3 এ চালিত হয় এবং ইনপুট স্ট্রিংয়ের পূর্ণসংখ্য অংশ দ্বারা গুণিত হয়।

সুতরাং উদাহরণস্বরূপ, দ্বিতীয় চরিত্রের অবস্থানের 1pযা pমধ্যে !!dp3 এক কমে এবং 3 থেকে চালিত এটা হবে 8. সব সুতরাং পূর্ণসংখ্যা অংশ, *pপদমর্যাদার মানে 8. দ্বারা গুন করা হবে 1p = 8, 2p = 16, ..., 9p = 72

সমস্ত *dস্তরের জন্য, পূর্ণসংখ্যা অংশটি 1 (বা কেবল কোনও গুণ নয়) দ্বারা গুণিত হবে। এর অর্থ 1d = 1, ..., 7d = 7

এবং সমস্ত *kএবং **kর‌্যাঙ্কের জন্য, দ্বিতীয় বর্ণের অবস্থানের !!dpসমান হবে falseযার সমান 0 (কোনও স্পষ্ট নয়), এক দ্বারা হ্রাস এবং 3 দ্বারা চালিত, এর অর্থ হল যে পূর্ণসংখ্যার অংশটি -1 দ্বারা গুণিত হবে। এর অর্থ 30k = -30, ..., 1k = -1

এটি আমার প্রথম গল্ফ প্রচেষ্টা, এটি কতটা খারাপ তা নিশ্চিত নয়!


1

এক্সেল ভিবিএ, 129 বাইট

একটি বেনামে ভিবিই ইমিডিয়েট উইন্ডো ফাংশন যা A1:A2কনসোলে সীমার ইনপুট নেয় এবং আউটপুট দেয়।

[B:B]="=SUBSTITUTE(A1,""p"",10)":[C1:C2]="=LEFT(B1,LEN(B1)-1)*-1^IFERROR(FIND(""k"",B1)>0,0)":?[INDEX(A:A,MATCH(MAX(C:C),C:C,0))]

Explaination

[B:B]="=SUBSTITUTE(A1,""p"",10)"                            ''  Convert inputs to numerics 
                                                            ''  by appending 10 to rank if 
                                                            ''  is a professional dan rank
                                                            ''
[C1:C2]="=LEFT(B1,LEN(B1)-1)*-1^IFERROR(FIND(""k"",B1)>0,0)"''  Remove rightmost char; If 
                                                            ''  the rank is kyū, then mult
                                                            ''  by -1
                                                            ''
?[INDEX(A:A,MATCH(MAX(C:C),C:C,0))]                         ''  Find the max, return the 
                                                            ''  corresponding input
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.