সংক্ষিপ্ত পূর্ণসংখ্যার বৃহত্তম এবং ক্ষুদ্রতম মান


14

এই সমস্যাটি পাঁচটি প্রোগ্রামিং সমস্যা থেকে প্রতিটি সফ্টওয়্যার ইঞ্জিনিয়ারকে 1 ঘন্টারও কম সময়ে সমাধান করতে সক্ষম হওয়া উচিত যা নিজেই একটি আকর্ষণীয় পঠন। প্রথম কয়েকটি সমস্যা তুচ্ছ, তবে চতুর্থটি কিছুটা আকর্ষণীয় হতে পারে।

স্ট্যান্ডার্ড ইনপুটটিতে একটি একক স্পেস দ্বারা পৃথক পূর্ণসংখ্যার একটি তালিকা দেওয়া, বৃহত্তম এবং ক্ষুদ্রতম মানগুলি মুদ্রণ করুন যা তাদের নিজস্ব লাইনে পূর্ণসংখ্যাকে একত্রে সংযুক্ত করে প্রাপ্ত করা যায়।

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

ইনপুট:

5 56 50

আউটপুট:

50556
56550

অর্ডার বিভিন্ন পয়েন্ট:

  • ফলাফলের ক্রমটি সবচেয়ে ছোট তবে বৃহত্তম।
  • কেবলমাত্র সবচেয়ে ক্ষুদ্রতম এবং বৃহত্তম মানগুলি মুদ্রিত হতে পারে (সমস্ত ভিন্নতার উপর পুনরাবৃত্তি হওয়া এবং সেগুলি মুদ্রণ বৈধ নয়)।
  • তালিকায় সর্বদা দুটি বা ততোধিক পূর্ণসংখ্যা থাকবে।
  • বৃহত্তম এবং ক্ষুদ্রতম ফলাফলগুলির একই হওয়া সম্ভব। ইনপুট ক্ষেত্রে 5 55, নম্বরটি 555দুটি বার মুদ্রণ করা উচিত।
  • পূর্ণসংখ্যাগুলি পৃথক নয় are 5 5বৈধ ইনপুট।
  • লিডিং 0পূর্ণসংখ্যার উপর গুলি হয় না বৈধ ইনপুট। আপনি হবে না এর জন্য অ্যাকাউন্ট প্রয়োজন 05 55

এটি কোড গল্ফ হিসাবে, স্বল্পতম এন্ট্রি জয়।


যদি কোনও ইনপুট সংখ্যায় একটি শীর্ষস্থানীয় 0 (লাইক 05) থাকে তবে আমরা কি এটিকে হিসাবে 05বা সহজভাবে বিবেচনা করি 5?
অপ্টিমাইজার

@ অপ্টিমাইজার শীর্ষস্থানীয় শূন্যগুলি বৈধ ইনপুট নয়।

নেতৃস্থানীয় 0s আউটপুট অনুমোদিত?
টিম

@ টিম ইনপুটটিতে যদি নেতৃস্থানীয় জিরো না থাকে তবে তারা কোথা থেকে আসবে?
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার ওহ হ্যাঁ, নির্বোধ!
টিম

উত্তর:


8

সিজেম, 14 13 বাইট

qS/e!:s$(N@W=

অনেকটাই অকপট. এটা এভাবে কাজ করে:

qS/                  e# Split the input on spaces
   e!                e# Get all permutations of the input numbers
     :s              e# Join each permutation order into a single string
       $             e# Sort them. This sorts the strings based on each digit's value
        (N@W=        e# Choose the first and the last out of the array separated by '\n'

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


1
ঠিক আছে আমি যাচ্ছি. আমার এখন e!অস্তিত্ব ছিল না (এমনকি উইকিতে এখনও উপস্থিত হয় না)।
ডেনিস

5
@ ডেনিস আপনি সেখানে যান
অপটিমাইজার

1
মিষ্টি পড়া। প্রচুর দরকারী নতুন জিনিস।
ডেনিস

এই অতিরিক্ত কৌশলগুলি দিয়ে সিজেমে গল্ফ করার জন্য টিপস আপডেট করতে কার্যকর হতে পারে ।

1
@ মিশেল টিপসগুলিতে সাধারণত এমন কোনও উত্তর অন্তর্ভুক্ত থাকে না যা কোনও ভাষার অন্তর্নির্মিত বৈশিষ্ট্যগুলি ব্যাখ্যা করে। উত্তরগুলির একটি দম্পতি আপডেট করার প্রয়োজন হতে পারে কারণ তারা এই নতুন বৈশিষ্ট্যগুলি থেকে উপকৃত হতে পারে।
অপ্টিমাইজার

5

পাইথ, 14 13 বাইট

hJSmsd.pcz)eJ

প্রথম এবং শেষ উপাদানটি মুদ্রণ করে সমস্ত ক্রিয়াকলাপ তৈরি করে এবং সেগুলি বাছাই করে।


Jইনলাইন বরাদ্দ করুন :hJSmsd.pcz)eJ
আইসএএজিজি

@ আইস্যাক ভাল! আমি কেবল জানতাম যে আমরা সেই নোংরা অশ্লীল সিজেমের চেয়ে নিকৃষ্ট হব না!
orlp

4

পাইথন 2, 104 99 বাইট

হাঁ।

from itertools import*;z=[''.join(x)for x in permutations(raw_input().split())];print min(z),max(z)

সম্পাদনা: xnor -5 বাইট জন্য ধন্যবাদ!


1
ভিতরে উপলব্ধি sortedবন্ধনী ছাড়াই কাজ করে, তবে আপনি বাছাই এড়াতে পারেন এবং ঠিক নিতে minএবং নিতে পারেন max
xnor

হ্যাঁ, হ্যাঁ ধন্যবাদ!
sirpercival

3

গণিত, 64 58 বাইট

Print/@Sort[""<>#&/@Permutations@StringSplit@#][[{1,-1}]]&

এটি একটি স্ট্রিং গ্রহণ করে এবং দুটি লাইন মুদ্রণ করে একটি নামহীন ফাংশনটি সংজ্ঞায়িত করে। এটি অন্যদের মতোই সহজ সরল: সমস্ত ক্রমশক্তি পান, তাদের সাথে একত্রে যোগদান করুন, তাদের বাছাই করুন এবং প্রথম এবং শেষ ফলাফল মুদ্রণ করুন।

আলেফালফাকে ধন্যবাদ ছয়টি বাইট সংরক্ষণ করলেন।


{#&@@#,Last@#}=>#[[{1,-1}]]
আলেফাল্ফ

@ এলফাল্ফা কখনও কখনও সহজ আরও ভাল। ধন্যবাদ! : ডি
মার্টিন ইন্ডার

2

জাভাস্ক্রিপ্ট (ES6) 54 72 85

এটি মনে হয় চেয়ে সহজ। এগুলি ডিকোসোগ্রাফিকভাবে বাছাই করুন। সুসংবাদটি হ'ল: ঠিক কীভাবে সরল জাভাস্ক্রিপ্ট সাজানো কাজ করে। ভাল ... না, এটি ভুল ... এখনও একটি (আরও সংশ্লেষিত) লিক্সোগ্রাফের তুলনা কাজটি করতে পারে।

দ্রষ্টব্য: a এবং b সংখ্যাসূচক হওয়া, একটি + [b] একটি '' 'b এর শর্টকাট, কারণ আমাদের স্ট্রিং কনটেনটেশন দরকার, যোগফলের যোগফল নয়।
দ্রষ্টব্য 2: line inside এর ভিতরে থাকা নতুন লাইনটি তাৎপর্যপূর্ণ এবং অবশ্যই এটি গণনা করতে হবে

সম্পাদনা করুন দো কোন মডারেটরের (... শুধু মজা) সঙ্গে তর্ক করবেন

Edit2 পপআপ ব্যবহার (দেখুন ফিক্সড ইনপুট / আউটপুট বিন্যাস : ইনপুট / আউটপুট পদ্ধতি কোড গলফ জন্য ডিফল্ট )

// Complete program with I/O
// The sorting function is shorter as input are strings

alert((l=prompt().split(' ')).sort((a,b)=>a+b>b+a).join('')+`
`+l.reverse().join(''))

// Testable function (67 chars)
// With an integer array parameter, the sorting function must convert to string 

F=l=>(l.sort((a,b)=>a+[b]>b+[a]).join('')+`
`+l.reverse().join(''))

টেস্ট সালে ফায়ারফক্স / ফায়ারবাগ কনসোলটি

F([50, 2, 1, 9])
F([5,56,50])
F([52,36,526])
F([52,36,525])
F([52,36,524]

12509
95021

50556
56550

3652526
5265236

3652525
5255236

3652452
5252436


1
I think your input format is wrong. Should be "integers separated by a single space on standard input".
nimi

@nimi you're right.Fixed
edc65

2

J, 34 36, 42 bytes

simple brute force:

h=:3 :'0 _1{/:~;"1":&.>y A.~i.!#y'

h 5 50 56
50556 
56550

h 50 2 1 9
12509
95021

1

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

import Data.List
g=sort.map concat.permutations.words
h i=unlines[g i!!0,last$g i]
main=interact h

স্পেসগুলিতে ইনপুট স্ট্রিং বিভক্ত করুন, প্রতিটি ক্রমানুসারে সাজান এবং সাজান। প্রথম এবং শেষ উপাদানটি মুদ্রণ করুন।


1

জুলিয়া, 77 বাইট

v->(Q=extrema([int(join(x)) for x in permutations(v)]);print(Q[1],"\n",Q[2]))

এটি একটি নামহীন ফাংশন তৈরি করে যা কোনও ভেক্টরকে ইনপুট হিসাবে গ্রহণ করে এবং যুক্ত উপাদানগুলির সর্বনিম্ন এবং সর্বাধিক সর্বাধিক প্রিন্ট করে। এটি কল করার জন্য, এটির একটি নাম দিন f=v->...

অবহেলিত + ব্যাখ্যা:

function f(v)
    # Create an integer vector of the joined permutations using comprehension,
    # then get the minimum and maximum as a tuple using extrema().

    Q = extrema([int(join(x)) for x in permutations(v)])

    # Print the minimum and the maximum, separated by a newline.
    print(Q[1], "\n", Q[2])
end

পরামর্শ স্বাগত!


1

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

দুঃখের বিষয়, জেএস-তে কোনও অন্তর্নির্মিত অনুদানের কাজ নেই :(

f=(o,y,i,a)=>y?o.concat(a[1]?a.filter((k,j)=>j^i).reduce(f,[]).map(z=>y+z):y):(q=o.split(' ').reduce(f,[])).sort().shift()+`
`+q.pop()
<!-- Snippet Demo (Firefox only) -->

<input id="input" value="5 56 50" />
<input type="button" onclick="output.innerHTML=f(input.value)" value="Run" />
<pre id="output"></pre>


1

আর, 59 বাইট

write(range(combinat:::permn(scan(),paste,collapse="")),"")

1
চমৎকার কাজ. আপনি যদিও মাত্র দুটি কলোন ব্যবহার করে একটি বাইট সংরক্ষণ করতে পারেন combinat::permn
অ্যালেক্স এ।

আমি ভেবেছিলাম ::প্যাকেজটি লোড করা প্রয়োজন (মাধ্যমে libraryবা require) তবে নয় :::। আমার ভুল হতে পারে; এটি সম্পর্কে আরও কিছু পড়া প্রয়োজন। ধন্যবাদ।
ফ্লোডেল

লাইব্রেরিটি লোড করা থাকলে আপনার কোনও কলোন লাগবে না; প্যাকেজটি नेमস্পেসের সাথে সংযুক্ত থাকায় আপনি সরাসরি ফাংশনটি কল করতে পারেন। যদি প্যাকেজটি ইনস্টল করা থাকে তবে লোড না হয় তবে আপনি দুটি প্যাকেজ সহ একটি নির্দিষ্ট প্যাকেজে ফাংশনগুলি উল্লেখ করতে পারেন।
অ্যালেক্স এ।

58 তাই হতে পারে। আমি নিজেকে permnছাড়াই সরাসরি ব্যবহার করতে দেব না library(combinat)
ফ্লোডেল

হ্যাঁ, কারণ আপনি যেভাবে library(combinat)ব্যবহারের আগে আপনাকে লাইব্রেরিটি লোড করতে হবে permn। ;)
অ্যালেক্স এ।

1

রুবি 75

আমার 'নেটিভ' ভাষা নয়, তবে আমি ভেবেছিলাম যে আমি চেষ্টা করব ... সুতরাং এটি (সম্ভবত) কিছু গল্ফিং টিপস ব্যবহার করতে পারে। তবুও, খারাপ প্রবেশকারী নয়।

puts STDIN.read.split(" ").permutation.map{|x|x.join}.sort.values_at(0,-1)

আমি বলব না যে এটি মার্জিত অন্য যে ভাষাতে সবকিছুই নির্মিত। এটি ঠিক কীভাবে কাজ করে তা মোটামুটি স্পষ্ট হওয়া উচিত।


আপনি একটি 3 বাইট সঞ্চয় {|x|x.join}সঙ্গে প্রতিস্থাপন করতে পারেন (&:join)
অ্যান্ড্রু

48 বাইটের জন্য আরও কয়েকটি রুবি শর্টকাট:puts$<.read.split.permutation.map(&:join).minmax


প্রাপ্তি ইনপুট পড়ার জন্য আরও খাটো:puts gets.split.permutation.map(&:join).minmax

1

পার্ল, 79 70 বি (68 + 2)

use Math::Combinatorics;say for(sort map{join'',@$_}permute@F)[0,-1]

সাথে কল echo 13 42 532 3 6|perl -M5.10.0 -an scratch.pl। এর জন্য একটি +2 বাইট জরিমানা রয়েছে -an। মডিউল নামের দৈর্ঘ্য সম্পর্কে লজ্জা ...


0

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

F=a=>(c=a.split(" ").sort((b,a)=>b+a-(a+b)),`${c.join("")}
${c.reverse().join("")}`)

ব্যবহার:

F("50 2 1 9")
/*
    12509
    95021
*/

1
টেমপ্লেট স্ট্রিংগুলির প্রেমে পড়বেন না। a + `` + b `$ {a} $ {b} than এর চেয়ে ছোট
edc65
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.