আরও বেশি সংখ্যক সংখ্যা ধরে রেখে অঙ্কগুলি সরান


22

ভূমিকা

এই চ্যালেঞ্জ সর্বাধিক সংখ্যা সরানোর খোঁজার মধ্যে রয়েছে ওয়াই মূল নম্বর থেকে ডিজিটের এন যা হয়েছে এক্স ডিজিটের।

ধরে নিচ্ছি y=2 n=5263 x=4, সম্ভাব্য সংখ্যাগুলি মুছতে y = 2 সংখ্যাগুলি হ'ল:

[52, 56, 53, 26, 23, 63]

সুতরাং, সর্বাধিক সংখ্যা হ'ল 63যা এই উদাহরণের জন্য আউটপুট হতে হবে।


অন্য যুক্তিটি হ'ল : প্রতিটি y এর জন্য বাম থেকে ডান দিকে অঙ্ক করুন যা ডান পাশের সংখ্যাটি বেশি, তারপরে এটিকে সরিয়ে ফেলুন, অন্যথায় কোনও মিল না থাকলে শেষ y- অঙ্কগুলি সরিয়ে ফেলুন

y=3 n=76751432 x=8ব্যাখ্যার জন্য ব্যবহার :

y=3
76751432
-^------ remove 6 because right next 7 is greater

y=2
7751432
---^--- remove 1 because right next 4 is greater

y=1
775432
-----^ the search failed, then remove last y digits

result = 77543

উভয় পদ্ধতি উপরে বর্ণিত কাজগুলি .. অবশ্যই, আপনি অন্য একটি পদ্ধতিও ব্যবহার করতে পারেন :)

চ্যালেঞ্জ

সংখ্যাটি এন এর 8 টির বেশি হবে না এবং y সর্বদা শূন্যের চেয়ে বড় এবং x এর চেয়ে কম হবে ।

কঠোর ইনপুট ফর্ম্যাটটি এড়াতে, আপনি মানগুলি: y n xযেভাবে পছন্দ করেন তা ব্যবহার করতে পারেন: ফাংশনটির পরামিতি হিসাবে, কাঁচা ইনপুট বা অন্য কোনও বৈধ উপায়। আপনার উত্তরে আপনি এটি কীভাবে করেছিলেন তা কেবল বলতে ভুলবেন না।

আউটপুট ফলাফল নম্বর হওয়া উচিত।

এটি , বাইট জেতে সংক্ষিপ্ত উত্তর।

উদাহরণ ইনপুট এবং আউটপুট

আবার: আপনার খুব কড়া হওয়ার দরকার নেই :)

4 1789823 7 -> 983
1 54132 5   -> 5432
3 69314 5   -> 94
2 51794 5   -> 794

সম্পাদন করা

আপনার কারও কারও সমস্যা সমাধানের জন্য এক্স মানের প্রয়োজন হতে পারে না এই সত্যটি প্রতিফলিত করার জন্য আমি ইনপুট ক্রমটি পরিবর্তন করেছি । এক্স এখন একটি alচ্ছিক মান।


2
দয়া করে আরও সাধারণ ইনপুট এবং আউটপুটকে মঞ্জুর করুন, একটি নির্দিষ্ট স্ট্রিং বিন্যাসের প্রয়োজন সাধারণত খারাপ ধারণা
xnor

1
@ লুইসমেন্দো আমার নিজের / আই ওকে সম্পাদনা করতে আপত্তি জানাবে না। ¯ \ _ (ツ) _ / ¯
অ্যালেক্স এ।

4
-1 কঠোর আই / ও প্রয়োজনীয়তার কারণে, একটি আকর্ষণীয় চ্যালেঞ্জের জন্য +1। সামগ্রিকভাবে, একটি শক্ত পাশ।
মেগো

1
অন্যরা যেমন বলেছে ইনপুট ফর্ম্যাটটি খুব কঠোর, বিশেষত এটি xএক ধরণের অপ্রয়োজনীয় তথ্য বিবেচনা করে।
13-10

1
@ ফ্যাটালাইজ প্রকৃতপক্ষে, আমি মনে করি যে আপনার গ্রহণ করা পদ্ধতির উপর নির্ভর করে xইনপুট হিসাবে কোডটি সংক্ষিপ্ত করতে পারে। (পয়েন্টে কেস: আমার জুলিয়া উত্তর।)
অ্যালেক্স এ।

উত্তর:


3

এ-রে , 9 7 বাইট

আমার নতুন ভাষা! মেটা অনুসারে, এটি অনুমোদিত, তবে যদি এটি গ্রহণ না করা হয়, তবে আমি এটি সরিয়ে দেব।

pM:i-II

ব্যাখ্যা:

  :i-II       Gets all permutations possible for the given number converted to an array,
                      with the length of y-x, which is the -II part
 M            Gets the maximum of the result above
p             Prints the resulting array above, with no separators

উদাহরণ ইনপুট (সংখ্যা, x, y):

1736413 7 4

আউটপুট:

764

আপনি গিথুব লিঙ্কে দেওয়া .jar ফাইলের সাথে এটি পরীক্ষা করতে পারেন।


4

এমএটিএল , 10 বাইট

-jowXncUX>

এটি ভাষা / সংকলকের সংস্করণ (9.2.1) ব্যবহার করে যা এই চ্যালেঞ্জের চেয়ে আগের is

এই ক্রমে স্ট্ডিন থেকে তিনটি ইনপুট লাগে: স্ট্রিংয়ের দৈর্ঘ্য, সরানো অক্ষরের সংখ্যা, স্ট্রিং।

উদাহরণ

>> matl
 > -jowXncUX>
 > 
> 7
> 4
> 1789823
983

সম্পাদনা : এটি অনলাইন চেষ্টা করুন! ( এই চ্যালেঞ্জের পরে লিঙ্কের কোডটি ভাষার পরিবর্তনের সাথে সামঞ্জস্য করার XNপরিবর্তে রয়েছে Xn; এছাড়াও, oআর প্রয়োজন হয় না)

ব্যাখ্যা

(অষ্টাভের এবং মতলবের nchoosekফাংশনটি ভিন্নভাবে আচরণ করার কারণে এটির তুলনায় এখনও 2 বাইট বেশি খরচ হয় the সংকলকের পরবর্তী প্রকাশে স্থির।)

-        % implicitly input two numbers, and subtract them
jo       % input string, and convert to ASCII codes
wXn      % swap inputs. Generate all combinations, each in a row
c        % convert to char array
U        % convert each row to a number
X>       % get maximum. Implicitly display

মূল চ্যালেঞ্জের উত্তর (কঠোর ইনপুট প্রয়োজনীয়তা): 16 বাইট

jYbZ)b-wowXncUX>

ব্যবহার বর্তমান সংস্করণ (9.2.1) ভাষা / কম্পাইলার করুন।

উদাহরণ

>> matl jYbZ)b-wowXncUX>
> 4 1789823 7
983

ব্যাখ্যা

(এটি চারটি বাইট কম হওয়া উচিত ছিল, তবে আমার এটি দরকার wow...cকারণ মাতলাবের nchoosekমতো অষ্টাভের ফাংশন অক্ষর ইনপুট নিয়ে কাজ করে না the সংকলকটির পরবর্তী প্রকাশের জন্য স্থির করা হবে))

j              % input string
YbZ)           % split at spaces into strings
b-             % subtract first and third (1-digit) strings
wow            % convert middle string into ASCII codes
Xn             % get all combinations, each in a row
c              % convert to char array
U              % convert each row to a number
X>             % get maximum. Implicitly display

3
wowআপনার কোডটি তার নিজস্ব স্বল্পতা দেখে অবাক হয়েছে;)
ইটিএইচ প্রোডাকশনগুলি

3
নিবন্ধন করুন ঠিক আছে, নতুন ইনপুট প্রয়োজনীয়তার সাথে এটি 6 বাইট হারিয়েছে এবং ... বাকরুদ্ধ হয়ে গেছে
লুইস মেন্ডো

3

পাইথ - 11 9 8 বাইট

eS.cz-QE

টেস্ট স্যুট


ভাল গল্ফ, কিন্তু ইনপুট ফর্ম্যাটিং মেনে চলেন না?
লুই

@ লুই ওহ, এটি যে কঠোর, স্থির ছিল তা দেখেনি।
মালটিসেন

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

@ এল ফিক্সড স্পেস ফিলার
মালটিসেন

দেখতে আরও ভাল লাগছে, তবে আমি মনে করি যে ইনপুটটিতে একই লাইনেও এক্স রয়েছে, যেখানে x মূল সংখ্যায় অঙ্কের সংখ্যা? অর্থাৎ, 2 5263 4
লুই

1

জাপট, 19 বাইট

Vs ¬àW-U m¬mn n!- g

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

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

        // Implicit: U = y, V = n, W = x
Vs ¬    // Convert V into a string, then split into an array of chars.
àW-U    // Generate all combinations of length W-U.
m¬mn    // Join each pair back into a string, then convert each string to a number.
n!-     // Sort by backwards subtraction (b-a instead of a-b; highest move to the front).
g       // Get the first item in this list.
        // Implicit: output last expression

1

ব্র্যাচল্যাগ , 30 বাইট

,{,[N:Y].hs?lL,Nl-Y=L}?:1forh.

যেহেতু ওপি আইও-তে সীমাবদ্ধতাগুলি শিথিল করেছে, এটি [Number, NumberOfDigitsRemoved]ইনপুট হিসাবে প্রত্যাশা করে এবং উত্তরটি আউটপুট হিসাবে প্রদান করে, যেমন brachylog_main([1789823,4], Z).

ব্যাখ্যা

,{                   }?:1f     § Declare sub-predicate 1 and find all inputs which satisfy
                               § this sub-predicate with output = Input of the main predicate
                               § (i.e. [Number, Number of digits to remove])

                               § -- Sub-predicate 1 --
  ,[N:Y].                      § Output = [N, Y]
         hs?                   § Input = a subset of N
            lL,Nl-Y=L          § Length of Input = Length of N - Y

                          orh. § Order the list of answers, reverse it an return the first
                               § element (i.e. the biggest number of the list)

1

পাইথন 3, 69 বাইট

এটি তিনটি আর্গুমেন্ট গ্রহণ করে বেনামে ফাংশনটি সংজ্ঞায়িত করে। নিয়ম যে, "আপনি মান ব্যবহার করতে পারেন: পূর্ণ সুবিধা গ্রহণ y n xপথ আপনি পছন্দ", আমি স্বীকার করি করার জন্য চয়ন করেছেন yএবং xপূর্ণসংখ্যার এবং nএকটি স্ট্রিং হিসাবে। রিটার্ন মান একটি স্ট্রিং হয়।

from itertools import*
lambda y,n,x:''.join(max(combinations(n,x-y)))

কেবলমাত্র যদি কেউ মনে করেন যে এটি নিয়মগুলি খুব দূরে প্রসারিত করছে, এই সংস্করণটি সমস্ত ইনপুটগুলি পূর্ণসংখ্যা হিসাবে গ্রহণ করে এবং এটি 74 বাইট।

from itertools import*
lambda y,n,x:''.join(max(combinations(str(n),x-y)))

এবং কেবল কিক্সের জন্য, আমি একটি দ্বি-যুক্তির সংস্করণও লিখেছিলাম, কমান্ড লাইন থেকে নিয়েছিলাম yএবং nফলাফলটি মুদ্রণ করেছি STDOUT। এটি 92 বাইট।

import sys,itertools as i
_,y,n=sys.argv
print(*max(i.combinations(n,len(n)-int(y))),sep='')

1

ES6, 70 বাইট

r=(y,n)=>y?r(y-1,Math.max(...`${n}`.replace(/./g," $`$'").split` `)):n

yমিথ্যা এবং nস্ট্রিং না হলে সংখ্যাসূচক ফলাফল প্রদান করে । আমি নিজেকে নিশ্চিত করেছি যে পুনরাবৃত্তিগুলি ভুল পদ্ধতিতে কাজ করা এখনও কার্যকর হয় (আমার সমাধানটি সঠিক পুনরাবৃত্তি করার ক্ষেত্রে প্রযোজ্য নয়)।

এছাড়াও আমার প্রথম কোড গল্ফ যেখানে আমি তিনটি উদ্ধৃতি চিহ্ন ব্যবহার করি (যদিও সমস্ত উদ্ধৃতি হিসাবে নয়), যা আমাকে তুচ্ছভাবে দৈর্ঘ্য গণনা করতে বাধা দেয়।


1

জুলিয়া, 128 95 বাইট

f(y,n,x)=maximum(i->parse(join(i)),filter(k->endof(k)==x-y,reduce(vcat,partitions(["$n"...]))))

এটি এমন একটি ফাংশন যা তিনটি মানকে প্যারামিটার হিসাবে গ্রহণ করে এবং পূর্ণসংখ্যা দেয়।

Ungolfed:

function f{T<:Integer}(y::T, n::T, x::T)
    # Get all ordered partitions of the digits of n
    p = reduce(vcat, partitions(["$n"...]))

    # Filter to groups of size x-y
    g = filter(k -> endof(k) == x - y, p)

    # Get the maximum resulting number
    return maximum(i -> parse(join(i)), g)
end

1

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

import Data.List
y#x=maximum.filter((==x-y).length).subsequences

ব্যবহারের উদাহরণ: (4#7)"1789823"-> "983"

মূল সংখ্যাটি nএকটি স্ট্রিং হিসাবে নেওয়া হয়। (নিশ্চিত না যে আমি "কোনও কঠোর ইনপুট ফর্ম্যাট" নিয়মটি অত্যধিক চাপ দিচ্ছি তবে প্রথম সংস্করণে স্ট্রিং ইনপুট প্রয়োজন (!))।

এটি কীভাবে কাজ করে: সমস্ত অনুচ্ছেদের একটি তালিকা তৈরি করুন n, দৈর্ঘ্যের সাথে রাখুন x-yএবং সর্বোচ্চটি চয়ন করুন।


1

রুবি, 40 বাইট

->y,n,x{n.chars.combination(x-y).max*''}

এটি একটি বেনাম ফাংশন যা পূর্ণসংখ্যার হিসাবে এবং একটি স্ট্রিং হিসাবে গ্রহণ করে yএবং একটি স্ট্রিং প্রদান করে। আপনি উদাহরণস্বরূপ এটি কল করতে পারেনxn

->y,n,x{n.chars.combination(x-y).max*''}[2,"5263",4]

এবং এটি ফিরে আসবে "63"


1

ম্যাটল্যাব 40 বাইট

@(n,y)max(str2num(nchoosek(n,nnz(n)-y)))

টেস্ট:

ans('76751432',3)
ans = 77543


0

জাভাস্ক্রিপ্ট (ES6), 78

2 টি আর্গুমেন্ট y এবং d সহ একটি পুনরাবৃত্ত ফাংশন। yসংখ্যা বা স্ট্রিং dহতে পারে, একটি স্ট্রিং হতে হবে।

r=(y,d)=>y?Math.max(...[...d].map((x,i)=>r(y-1,d.slice(0,i)+d.slice(i+1)))):+d

চ্যালেঞ্জটি পরিবর্তিত হওয়ার আগে এটি ছিল 107 - ... সমস্ত ইনপুট / আউটপুট বিজোড় সহ ...

x=>(r=(n,d)=>n?Math.max(...[...d].map((x,i)=> r(n-1,d.slice(0,i)+d.slice(i+1)))):+d)(...x.match(/\d+/g))+'\n'

পরীক্ষা

r=(y,d)=>y?Math.max(...[...d].map((x,i)=>r(y-1,d.slice(0,i)+d.slice(i+1)))):+d

function test() {
  [a,b]=I.value.match(/\d+/g)
  O.textContent=r(a,b)
}

test()
y,n: <input id=I value='4 1789823' oninput="test()">
<pre id=O></pre>


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