স্মুটেস্ট নম্বরটি সন্ধান করুন


59

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

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

উদাহরণস্বরূপ, পরিসীমাটি ধরে 5, 6, 7, 8, 9, 10, 8 হ'ল স্মুটেস্ট সংখ্যা, কারণ 8 এর সর্বশ্রেষ্ঠ মৌলিক গুণক 2 হয়, অন্য সমস্ত সংখ্যার সমস্তটিতে 3 বা তার বেশি সংখ্যার প্রধান গুণক থাকে।

ইনপুট: ইনপুটটি দুটি ধনাত্মক পূর্ণসংখ্যা হবে, যা একটি ব্যাপ্তি নির্ধারণ করে। সীমাতে সর্বনিম্ন অনুমোদিত মাপের পূর্ণসংখ্যা 2 হয় You যতক্ষণ না কোনও স্বেচ্ছাসেবী আপনার ভাষার সীমানার মধ্যে সুনির্দিষ্টভাবে নির্ধারণ করা যায় ততক্ষণ আপনি পরিসীমাটি অন্তর্ভুক্তিমূলক, একচেটিয়া, অর্ধ-একচেটিয়া, ইত্যাদি চয়ন করতে পারেন। আপনি ফাংশন ইনপুট, স্টিডিন, কমান্ড লাইন আর্গুমেন্ট বা আপনার ভাষার জন্য কোনও সমতুল্য পদ্ধতির মাধ্যমে নম্বরগুলি নিতে পারেন। ইনপুটটিতে কোনও এনকোডিং অতিরিক্ত তথ্য নেই।

আউটপুট: ইনপুট সীমাতে এক বা একাধিক পূর্ণসংখ্যাগুলি রিটার্ন করুন, মুদ্রণ করুন বা তার সমতুল্য যা সর্বাধিক মসৃণ (সর্বনিম্নতম ফ্যাক্টর) are একাধিক ফলাফল প্রত্যাবর্তন optionচ্ছিক, তবে আপনি যদি এটি করতে চান তবে ফলাফলগুলি অবশ্যই স্পষ্টভাবে সীমিত করা উচিত। নেটিভ আউটপুট ফর্ম্যাট একাধিক ফলাফলের জন্য ভাল।

আপনি কীভাবে ইনপুট নিচ্ছেন এবং আউটপুট দিচ্ছেন তা দয়া করে আপনার উত্তরে জানান।

স্কোরিং: কোড গল্ফ অক্ষর অনুসারে ASCII তে লেখা হয়, বা 8 * বাইট / 7 ASCII না থাকলে গণনা করুন।

পরীক্ষার কেস:

দ্রষ্টব্য: এগুলি পাইথন-শৈলীর ব্যাপ্তিগুলি, নিম্ন প্রান্ত সহ তবে উচ্চ প্রান্ত নয়। আপনার প্রোগ্রাম হিসাবে উপযুক্ত হিসাবে পরিবর্তন করুন। শুধুমাত্র একটি ফলাফল প্রয়োজন।

smooth_range(5,11)
8
smooth_range(9,16)
9, 12
smooth_range(9,17)
16
smooth_range(157, 249)
162, 192, 216, 243
smooth_range(2001, 2014)
2002

(শুরু, সমাপ্তি) পরিবর্তে (শুরু, দৈর্ঘ্য) হিসাবে নির্দিষ্ট রেঞ্জগুলি কি গ্রহণযোগ্য?
কোডসইনচাউস

1
নিবন্ধন করুন এটি "বা যাই হোক না কেন" ধারার আওতায় এসেছে।
isaacg

3
আমি নন-এসএসআইআই উত্তরগুলিকে দণ্ডিত করার দিকটি দেখছি না। সব ক্ষেত্রে কেবল বাইটগুলি গণনা করা সহজ হবে।
nyuszika7h

1
@ nyuszika7h Ascii বাইটের তুলনায় উল্লেখযোগ্য পরিমাণে ছোট - এটি কেবল 7 বিট ব্যবহার করে। অতএব, আমি একটি অক্ষরকে 7 বিট দ্বারা চিহ্নিত করি এবং সেই অনুসারে অন্যান্য ভাষাগুলি স্কেল করি। তবে, ভাষাটি যদি অ-এসসিআইআই না হয় তবে এর সমস্ত অক্ষরগুলিকে b বিটের মধ্যে প্যাক করতে পারে, তবে আমি অতিরিক্ত অর্থ প্রয়োগ করব না। জে / কে বনাম এপিএল দেখুন। tl; ডাঃ বাইটস সহজ, তবে এপিএল ইত্যাদি দেয়। অল। একটি সূক্ষ্ম কিন্তু অন্যায় সুবিধা।
isaacg

3
@ আইস্যাক আপনি ছোট চরিত্রের সেট ব্যবহার করে সিউডো-ভাষা তৈরিতে উত্সাহ দিচ্ছেন। যদি আমরা 8-বিট চরিত্রের সেটগুলি থেকে 7-বিট অক্ষর সেটগুলি স্কোর করি, তবে কেউ আধুনিক আধুনিক ভাষাগুলি 6 টি বিটগুলিতে প্যাক করতে পারে (64 অক্ষর আমাদের এজেড, 0-9, মুষ্টিমেয় সাদা স্থান, 20 বিরামচিহ্ন এবং কিছু বাদ দিতে পারে) ।
স্পার

উত্তর:


99

সিজোম - 13

q~,>{mfW=}$0=

এটি http://cjam.aditsu.net/ এ চেষ্টা করুন

উদাহরণ ইনপুট: 2001 2014
উদাহরণ আউটপুট:2002

ব্যাখ্যা:

q~ইনপুটটি পড়ুন এবং মূল্যায়ন করুন, স্ট্যাকের উপর 2 নম্বর চাপিয়ে (কমপক্ষে এবং সর্বাধিক বলুন)
,একটি অ্যারে তৈরি করে [0 1 ... সর্বোচ্চ -1]
>কমপক্ষে শুরু হওয়া অ্যারেটিকে টুকরো টুকরো করে, যার ফলে [মিনিট ... সর্বোচ্চ -1]
{…}$বাছাই কীটি গণনা করতে ব্লকের সাহায্যে অ্যারে বাছাই করে
mfএকটি সংখ্যার সমস্ত মৌলিক উপাদানগুলির সাথে একটি অ্যারে পায়, যাতে
W=অ্যারের শেষ উপাদানটি হয় (ডাব্লু = -1), সুতরাং এটি হিসাবে ব্যবহৃত সবচেয়ে বড় প্রধান উপাদানটি প্রাপ্ত করে বাছাই করা কী
0=(সাজানো) অ্যারের প্রথম উপাদানটি পায়


38
ঠিক আছে, আমি অনুমান করি যে এটি।
এরিক ট্রেসারার

5
পাইথের সাথে আমার একটি ফ্যাক্টরাইজ ফাংশন যুক্ত করতে হবে।
isaacg

6
এই ভাষাটি উইজার্ডারি।
ব্রবিন

8
এটি কেবলমাত্র কিছু HQ9 + s ** টি টানার কাছাকাছি যা এটি লুফোলটি না হয়ে থাকতে পারে। অসাধারণ!
ইনগো বার্ক

25
mfW13 ༼ ຈ ل͜ ຈ ༽ ノকেউ 13 টি অক্ষরে এটি সমাধান করেছে।
তেহ ইন্টারনেটস

66

রেজেক্স (। নেট পিসিআরই স্বাদ), 183 129 বাইট

বাড়িতে এটি চেষ্টা করবেন না!

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

(?<=^(1+),.*)(?=\1)(?=((11+)(?=.*(?=\3$)(?!(11+?)\4+$))(?=\3+$)|(?!(11+)\5+$)1+))(?!.+(?=\1)(?:(?!\2)|(?=((11+)(?=.*(?=\7$)(?!(11+?)\8+$))(?=\7+$)|(?!(11+)\9+$)1+)).*(?=\2$)(?=\6)))1+

ইনপুটটি একটি অন্তর্ভুক্ত কমা-বিভাজিত পরিসীমা হিসাবে এনকোড করা হয়েছে, যেখানে উভয় সংখ্যা 1গুলি ব্যবহার করে অবিচ্ছিন্ন স্বরলিপিতে দেওয়া হয় । ম্যাচটি ট্রেলিং S1 সেকেন্ড হবে যেখানে Sরেঞ্জের স্মুটেস্ট নম্বর। সংক্ষিপ্ত সংখ্যার পক্ষে বন্ধনগুলি ভেঙে যায়।

সুতরাং প্রশ্নটি থেকে দ্বিতীয় উদাহরণটি হ'ল নিম্নোক্ত স্ট্রিং (মিলিত রেখাযুক্ত)

111111111,1111111111111111
                 =========

এটি (এখন বরং সুপরিচিত) প্রাইম-চেকিং রেজেক্সের উপর ভিত্তি করে , এর বিভিন্নতাগুলি সেখানে ছড়িয়ে ছিটিয়ে থাকা 6 বার এমবেড করা আছে।

যারা ফ্রি-স্পেসিং এবং মন্তব্যগুলি কী চলছে তা জানতে আগ্রহীদের জন্য একটি সংস্করণ এখানে দেওয়া আছে।

# Note that the beginning of the match we're looking for is somewhere
# in the second part of the input.
(?<=^(1+),.*)          # Pick up the minimum range MIN in group 1
(?=\1)                 # Make sure there are at least MIN 1s ahead

                       # Now there will be N 1s ahead of the cursor
                       # where MIN <= N <= MAX.


(?=(                   # Find the largest prime factor of this number
                       # store it in group 2.
  (11+)                # Capture a potential prime factor P in group 3
  (?=                  # Check that it's prime
    .*(?=\3$)          # Move to a position where there are exactly 
                       # P 1s ahead
    (?!(11+?)\4+$)     # Check that the remaining 1s are not composite
  )
  (?=\3+$)             # Now check that P is a divisor of N.
|                      # This does not work for prime N, so we need a 
                       # separate check
  (?!(11+)\5+$)        # Make sure that N is prime.
  1+                   # Match N
))

(?!                    # Now we need to make sure that here is not 
                       # another (smaller) number M with a smaller 
                       # largest prime factor

  .+                   # Backtrack through all remaining positions
  (?=\1)               # Make sure there are still MIN 1s ahead

  (?:
    (?!\2)             # If M is itself less than P we fail 
                       # unconditionally.
  |                    # Else we compare the largest prime factors.
    (?=(               # This is the same as above, but it puts the
                       # prime factor Q in group 6.
      (11+)
      (?=
        .*(?=\7$)
        (?!(11+?)\8+$)
      )
      (?=\7+$)
    |
      (?!(11+)\9+$)
      1+
    ))
    .*(?=\2$)          # Move to a position where there are exactly 
                       # P 1s ahead
    (?=\6)             # Try to still match Q (which means that Q is
                       # less than P)
  )
)
1+                     # Grab all digits for the match

আপনি এটি এখানে অনলাইনে পরীক্ষা করতে পারেন । যদিও খুব বড় ইনপুট চেষ্টা করে দেখুন না, আমি এই দানবটির অভিনয় সম্পর্কে কোনও গ্যারান্টি দিই না।

সম্পাদনা:

আমি এটি পিসিআরই এ পোর্টিং শেষ করেছি (যার জন্য কেবল দুটি পদক্ষেপ প্রয়োজন), এবং প্রায় তিন তৃতীয়াংশ দ্বারা রেজেক্সকে সংক্ষিপ্ত করে তুলছি। নতুন সংস্করণটি এখানে:

^(1+),.*?\K(?=\1)(?=((11+)(?=.*(?=\3$)(?!(11+?)\4+$))(?=\3+$)|(?!(11+)\5+$)1+))(?!.+(?=\1)(?:(?!\2)|(?=((?2))).*(?=\2$)(?=\6)))1+

মূলত দুটি পরিবর্তন সহ এটি একই রকম:

  • পিসিআরই স্বেচ্ছাসেবী দৈর্ঘ্যের বর্ণনক্ষেত্র সমর্থন করে না (যা আমি MINগ্রুপে অন্তর্ভুক্ত করতাম 1)। যাইহোক, PCREসমর্থন করে \Kযা ম্যাচের শুরুটি বর্তমান কার্সার অবস্থানে পুনরায় সেট করে। সুতরাং (?<=^(1+),.*)হয়ে ওঠে ^(1+),.*?\K, যা ইতিমধ্যে দুটি বাইট সংরক্ষণ করে।
  • আসল সঞ্চয়াগুলি পিসিআরই এর পুনরাবৃত্তি বৈশিষ্ট্য থেকে আসে। আমি আসলে পুনরাবৃত্তি ব্যবহার করছি না, তবে আপনি আবার সাবরুটাইন কলের মতো, আবার (?n)গ্রুপের সাথে মেলে ব্যবহার করতে পারেন n। যেহেতু মূল রেজেক্সে একটি সংখ্যার বৃহত্তম প্রাইম ফ্যাক্টরটি দু'বার খুঁজে পাওয়ার জন্য কোডটি রয়েছে, তাই আমি দ্বিতীয়টির পুরো বাল্কটিকে একটি সহজ দিয়ে প্রতিস্থাপন করতে সক্ষম হয়েছি (?2)

37
দেবতার পবিত্র মা
নিউব

1
@ টিমউই আমাকে দেখতে হবে যে বৃহত্তম প্রাইম ফ্যাক্টর (গ্রুপ 3বা 7) আসলে প্রধান prime এটির জন্য এটি প্রথমে ক্যাপচার করার পরে আরও একটি অনুলিপি রয়েছে যা প্রাইমসের ক্ষেত্রে হবে না। আমি সেই জায়গায় কোথাও কোথাও নজরদারি লাগিয়ে। নেট এ কাজ করার সময় আমি চেকের জন্য কিছুটা পিছিয়ে যেতে পারছি, ভেরিয়েবল-দৈর্ঘ্যের লুকবাইন্ডের অভাবে সংক্ষিপ্ত পিসিআরই সংস্করণে এটি সম্ভব হবে না। এটা সম্ভবত হয় যে বিট কমান সম্ভব, কিন্তু আমি শুধু পরিবর্তন মনে করি না +করতে *কাজ করে।
মার্টিন এেন্ডার

2
নিবন্ধন করুন আমি ভাবছি আপনি এই চ্যালেঞ্জটি পেরিয়ে যাওয়ার পরেও দীর্ঘ সময় ধরে এসেছেন তবে আমি কেবল একটি রেজেক্স সমাধান দেখেছি এবং এই পোস্টের শীর্ষে আপনার সতর্কতাটিকে পুরোপুরি উপেক্ষা করতে পারি না তবে :) অন্য ব্যক্তির কোডটি গল্ফ করা আমার পক্ষে কঠিন বলে মনে হচ্ছে, সুতরাং আপনার রেজেক্সটি দেখে এবং বিভ্রান্ত হয়ে যাওয়ার পরে, আমি এটি স্ক্র্যাচ থেকে চেষ্টা করেছি এবং এটি নিয়ে এসেছি: (.*),.*?\K(?=(..+)((?=((?(R)\6|\2))*$).*(?=\4$)(?!(..+)\5+$)))(?!.+(?=\1)(?=(..+)(?3)).*(?!\2)\6).+ পিসিআরইতে 99 বাইট। এছাড়াও, আমি এই সাইটে আপনার প্রচুর কাজ জুড়ে এসেছি এবং আমি একটি বড় অনুরাগী: ডি ভবিষ্যতে একটি রেজেক্স যুদ্ধের প্রত্যাশায়!
জয়তে

1
আমি এই মন্তব্যে কোড গল্ফ খেলছিলাম সুতরাং আমি কেবল এখানে সংযোজন করব: আপনি \4$লুপহ্যাড থেকে বের করে এবং নেতিবাচক লুপহেডের পরে এটি স্টিক করে 4 বি ছুঁড়ে ফেলতে পারেন, তবে এটি মারাত্মকভাবে কর্মক্ষমতা প্রভাবিত করে (প্রতিটি সংখ্যার উপগোষ্ঠী <= \ 4 কেবলমাত্র 4 ডলারের চেয়ে সংমিশ্রণের জন্য পরীক্ষা করা হয় এবং দীর্ঘ ইনপুটগুলিতে ব্যর্থ হয়।
জয়তে

1
@ জেটিয়া এই সম্পর্কে আপনার কাছে ফিরে পেতে চিরকালের জন্য দুঃখিত আপনি যেহেতু বিষয়টি স্ক্র্যাচ থেকে লিখেছেন তাই আমার মনে হয় আপনার আলাদা উত্তর পোস্ট করা উচিত। এটি দুর্দান্ত স্কোর এবং এটির জন্য আপনি কৃতিত্বের অধিকারী। :)
মার্টিন ইন্ডার

16

রেজেক্স (পিসিআরই স্বাদ), 66 (65🐌) বাইট

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

আপনি যদি কিছু অ্যানারি রেজেক্স যাদু আপনার জন্য নষ্ট না করতে চান তবে এটি পড়বেন না। আপনি যদি এই যাদুটি নিজেই বের করে নিতে শট নিতে চান তবে আমি ECMAScript রেজেক্সে কিছু সমস্যা সমাধানের মাধ্যমে সুপারিশ করার পরামর্শ দিচ্ছি:

  1. প্রাথমিক সংখ্যাগুলি মিলান (আপনি যদি রেজেক্সে এটি করার সাথে ইতিমধ্যে পরিচিত না হন)
  2. 2 এর মিলের পাওয়ার (যদি আপনি ইতিমধ্যে এটি না করে থাকেন)। অথবা রেগেক্স গল্ফের মাধ্যমে কেবল আপনার পথে কাজ করুন , এতে প্রাইম এবং পাওয়ারগুলি অন্তর্ভুক্ত রয়েছে। ক্লাসিক এবং টিউকন সমস্যা সেট উভয়ই করতে ভুলবেন না।
  3. N এর ক্ষমতার সাথে মিলানোর সবচেয়ে সংক্ষিপ্ততম উপায়টি আবিষ্কার করুন যেখানে এন কিছু ধ্রুবক (যেমন রেজেক্সে নির্দিষ্ট, ইনপুট নয়) যা যৌগিক হতে পারে (তবে এটির প্রয়োজন নেই)। উদাহরণস্বরূপ, 6 এর সাথে মিলের ক্ষমতা।

  4. Nth শক্তির সাথে মিলে যাওয়ার একটি উপায় সন্ধান করুন, যেখানে এন কিছু ধ্রুব>> = 2। উদাহরণস্বরূপ, নিখুঁত স্কোয়ারগুলি মেলে। (ওয়ার্মআপের জন্য, প্রধান শক্তির সাথে মেলে ))

  5. সঠিক গুণক বিবৃতি মিলান। ত্রিভুজাকার সংখ্যাগুলি মিলান।

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

  7. প্রচুর সংখ্যা মেলে (যদি আপনি আমার মতো উন্মাদ হন)

  8. অনুরোধ করা নির্ভুলতার জন্য অযৌক্তিক সংখ্যার গণনা করুন (উদাহরণস্বরূপ গোলের ফলাফলটি ম্যাচ হিসাবে প্রত্যাবর্তন করে 2 এর বর্গমূল দিয়ে ইনপুটটি ভাগ করুন)

( আমি যে রেজেক্স ইঞ্জিনটি লিখেছিলাম তা সহায়ক হতে পারে, কারণ এটি অ্যারারি গণিতের রেজিক্সে খুব দ্রুত এবং এতে একটি অ্যানারি সংখ্যাসূচক মোড রয়েছে যা প্রাকৃতিক সংখ্যার ব্যাপ্তিগুলি পরীক্ষা করতে পারে (তবে স্ট্রিংস মোড রয়েছে যা অ-অ্যানারি রেজেক্সেসকে মূল্যায়ন করতে পারে বা অ্যানারি ডিলিমিটার সহ)। ডিফল্টরূপে এটি ECMAScript সামঞ্জস্যপূর্ণ, তবে alচ্ছিক এক্সটেনশনগুলি রয়েছে (যা বেছে বেছে পিসিআরআই, এমনকি এমনকি মলিকুলার লকহ্যাড, এমন কোনও বিষয় যা অন্য কোনও রেজেক্স ইঞ্জিন নেই add)

অন্যথায়, পড়ুন এবং এই গিটহব গিস্টটি (সতর্কতা, অনেক স্পেলার) পড়ুন যা ক্রমবর্ধমান অসুবিধাজনিত প্রাকৃতিক সংখ্যার কার্যাবলী মোকাবেলায় ECMAScript রেজেক্সকে ধাক্কা দেওয়ার যাত্রার ইতিহাসকে বর্ণনা করে (টিউকনের সেট ধাঁধা দিয়ে শুরু করে, সবগুলিই গাণিতিক নয়, যা এটিকে ছড়িয়ে দিয়েছিল যাত্রা)।

এই সমস্যার অন্যান্য রেজেক্স সমাধানগুলির মতো, ইনপুটটি দ্বিখণ্ডিত ইউনারীতে দুটি সংখ্যা হিসাবে দেওয়া হয়, একটি অন্তর্ভুক্ত ব্যাপ্তি উপস্থাপন করে একটি কমা দ্বারা পৃথক করা হয়। কেবল একটি নম্বর ফিরে আসে। পৃথক ম্যাচ হিসাবে একই ক্ষুদ্রতম বৃহত্তম মৌলিক ফ্যাক্টর ভাগ করে এমন সমস্ত সংখ্যাকে ফেরত দিতে রিজেজকে সংশোধন করা যেতে পারে তবে তার জন্য পরিবর্তনশীল দৈর্ঘ্যের লুকবিহাইডের প্রয়োজন হয় এবং \Kম্যাচের পরিবর্তে ক্যাপচার হিসাবে ফলাফলটি ফিরিয়ে দেওয়া বা ফলাফলটি ফিরিয়ে আনতে হবে।

ক্ষুদ্রতম মৌলিক ফ্যাক্টর দ্বারা পুনরাবৃত্তি নিখুঁত বিভাগের জন্য এখানে ব্যবহৃত কৌশলটি ম্যাচের স্ট্রিংগুলিতে ব্যবহার করা মিলগুলির সাথে মিল রয়েছে যার দৈর্ঘ্যটি আমি যখন কিছুক্ষণ আগে পোস্ট করেছি চতুর্থ পাওয়ার উত্তর।

আর কোনও অ্যাডোও নেই: ((.+).*),(?!.*(?=\1)(((?=(..+)(\5+$))\6)*)(?!\2)).*(?=\1)\K(?3)\2$

আপনি এখানে চেষ্টা করে দেখতে পারেন

এবং মন্তব্যগুলির সাথে ফ্রি-স্পেসিং সংস্করণ:

                        # No ^ anchor needed, because this algorithm always returns a
                        # match for valid input (in which the first number is less than
                        # or equal to the second number), and even in /g mode only one
                        # match can be returned. You can add an anchor to make it reject
                        # invalid ranges.

((.+).*),               # \1 = low end of range; \2 = conjectured number that is the
                        # smallest number in the set of the largest prime factor of each
                        # number in the range; note, it is only in subsequent tests that
                        # this is implicitly confined to being prime.
                        # We shall do the rest of our work inside the "high end of range"
                        # number.

(?!                     # Assert that there is no number in the range whose largest prime
                        # factor is smaller than \2.
  .*(?=\1)              # Cycle tail through all numbers in the range, starting with \1.

  (                     # Subroutine (?3):
                        # Find the largest prime factor of tail, and leave it in tail.
                        # It will both be evaluated here as-is, and later as an atomic
                        # subroutine call. As used here, it is not wrapped in an atomic
                        # group. Thus after the return from group 3, backtracking back
                        # into it can increase the value of tail – but this won't mess
                        # with the final result, because only making tail smaller could
                        # change a non-match into a match.

    (                   # Repeatedly divide tail by its smallest prime factor, leaving
                        # only the largest prime factor at the end.

      (?=(..+)(\5+$))   # \6 = tool to make tail = \5 = largest nontrivial factor of
                        # current tail, which is implicitly the result of dividing it
                        # by its smallest prime factor.
      \6                # tail = \5
    )*
  )
  (?!\2)                # matches iff tail < \ 2
)

# now, pick a number in the range whose largest prime factor is \2
.*(?=\1)                # Cycle tail through all numbers in the range, starting with \1.
\K                      # Set us up to return tail as the match.
(?3)                    # tail = largest prime factor of tail
\2$                     # Match iff tail == \2, then return the number whose largest
                        # prime factor is \2 as the match.

সাববারটিনের অনুলিপি সহ সাবরুটাইন কলটি প্রতিস্থাপন করে এবং \ কে ব্যবহার না করে ম্যাচটিকে ক্যাপচার গ্রুপ হিসাবে ফিরিয়ে দিয়ে অ্যালগোরিদমটি সহজেই ECMAScript এ পোর্ট করা যায়। ফল দৈর্ঘ্যে 80 বাইট:

((x+)x*),(?!.*(?=\1)((?=(xx+)(\4+$))\5)*(?!\2)).*(?=\1)(((?=(xx+)(\8+$))\9)*\2$)

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

দ্রষ্টব্য যে সঠিক কার্যকারিতা হ্রাস না করে 1 বাইট (66 থেকে 65 বাইট ) দ্বারা আকার হ্রাস ((.+).*)করতে পরিবর্তিত হতে পারে - তবে রেজেক্স স্বচ্ছলতার মধ্যে বিস্ফোরিত হয়।((.+)+)

এটি অনলাইন চেষ্টা করুন! (By৯ বাইট ECMAScript এক্সফোনেনশিয়াল-স্লোডাউন সংস্করণ)


11

পাইথন 2, 95

i=input()
for a in range(*i):
 s=a;p=2
 while~-a:b=a%p<1;p+=1-b;a/=p**b
 if p<i:i=p;j=s                                        
print j

বিচারের ডিভিশন সংখ্যার স্নিগ্ধতা অনুসন্ধান করে যে পর্যন্ত না সংখ্যা 1. iদোকানে ক্ষুদ্রতম স্নিগ্ধতা এ পর্যন্ত, jসংখ্যা যে স্নিগ্ধতা দিলেন সঞ্চয় করে।

গল্ফগুলির জন্য @ এক্সনরকে ধন্যবাদ।


1
যে if/elseshortenable হতে পেয়েছে। আমার প্রথম চিন্তা b=a%p<1;p+=1-b;a/=p**b। বা একটি এক্সিকিউটিভ যা ইন্টারলিভড স্ট্রিংয়ে দু'এর মধ্যে একটি চালায়। এছাড়াও, সম্ভবত while~-aকাজ করে।
xnor

isaacg - আমি এই উত্তর ভালবাসি! বৃহত্তম প্রাইম ফ্যাক্টরের সন্ধান করতে আপনি কী দুর্দান্ত উপায় খুঁজে পেয়েছেন! আপনার পদ্ধতিটি ধার করার জন্য আমি উত্তরটি আপডেট করেছি, পদ্ধতিটিতে আপনাকে creditণ দিয়ে।
টড লেহম্যান

দুর্দান্ত সমাধান! ব্যবহার s,p=a,2,, i,j=p,s@ xnor এর ধারণাগুলি, রিলান্ড্যান্ট ইনডেন্টেশন সরিয়ে এবং ব্লকটিকে এক লাইনে রাখলে 95 টি অক্ষর পাওয়া যায়। আপনি কীভাবে 98 নিয়ে এসেছেন তা নিশ্চিত নয় ...
ফালকো

এই কোডটি ইমোটিকনগুলিতে পূর্ণ, :)
রোজেনথাল

@ ফালকো এই দুটি পরিবর্তন কোনও অক্ষর সংরক্ষণ করে না। 7-> 7।
isaacg

10

জে, 22 20 19 অক্ষর

({.@/:{:@q:)@(}.i.)

যেমন

   2001 ({.@/: {:@q:)@(}. i.) 2014
2002

(দুটি যুক্তি গ্রহণকারী কার্যাদি জে ইনফিক্স হয়))


আমি এটিতে একটি ক্র্যাক ছিল, এই উত্তর হিসাবে এটি সংক্ষিপ্ত না। তবুও:(#~ (= <./)@:(i:"1&1)@:*@:(_&q:))@:([ + i.@-~)

এখানে 1 বাইট {:হিসাবে একই >./এবং সংরক্ষণ করা হয়।
এলোমেলো

@ আর্যান্ডোমরা আপনি ঠিক বলেছেন - ভাল কল!
ফায়ারফ্লাই

সুন্দর। টিআইও যদি আপনি এটি যুক্ত করতে চান: এটি অনলাইনে চেষ্টা করুন!
জোনাহ

9

হাস্কেল, 96 94 93 86 80 টি অক্ষর

x%y|x<2=y|mod x y<1=div x y%y|0<1=x%(y+1)
a#b=snd$minimum$map(\x->(x%2,x))[a..b]

জিএইচসিআই (একটি হাস্কেল শেল) এর মাধ্যমে ব্যবহার:

>5 # 9
8
>9 # 15
9

সম্পাদনা: এখন অনেক সহজ অ্যালগরিদম।

এই সমাধানের মধ্যে পরিসরের উভয় সংখ্যা অন্তর্ভুক্ত রয়েছে (সুতরাং 8 # 9এবং 7 # 8উভয়ই 8)

ব্যাখ্যা:

(%) ফাংশনটি x এবং y দুটি পরামিতি নেয়। যখন y 2 হয়, ফাংশনটি x এর মসৃণতা প্রদান করে।

এখান থেকে অ্যালগরিদম সহজ - প্রতিটি সাবলীলতার সাথে সংখ্যার সব মসৃণতার সংমিশ্রনের তালিকাটি প্রতিটি স্বাচ্ছন্দ্যের সাথে তার মূল সংখ্যার একটি রেফারেন্স সঞ্চয় করে নিন, তারপরেও সবচেয়ে ছোটটি পেতে সাজান, এবং এটির রেফারেন্স নম্বরটি ফিরিয়ে দিন।


এখানে একই অ্যালগরিদম সহ একটি অব্যক্ত জাভাস্ক্রিপ্ট সংস্করণ রয়েছে:

function smoothness(n,p)
{
    p = p || 2
    if (x == 1)
        return p
    if (x % p == 0)
        return smoothness(x/p, p)
    else
        return smoothness(x,p+1);
}
function smoothnessRange(a, b)
{
    var minSmoothness = smoothness(a);
    var min=a;
    for(var i=a+1;i <= b;i++)
        if(minSmoothness > smoothness(i))
        {
            minSmoothness = smoothness(i)
            min = i
        }
    return min;
}

সংক্ষিপ্ত কিছু থেকে ন্যূনতম নামকরণ করা কি সম্ভব হবে? দেখে মনে হচ্ছে এটি কিছু অক্ষর সংরক্ষণ করবে।
isaacg

আমি এটি চেষ্টা করেছিলাম, তবে
মনোমর্জিবাদ

আপনি শুধু মি = সর্বনিম্ন করতে পারবেন না? হাস্কেল এখনও রহস্য is
isaacg

1
@ আইসএএজিজি মনোমরফিজম নিষেধাজ্ঞাকে m l=minimum l
পাশ কাটিয়ে

2
আমি একটি হাস্কেল সমাধান পোস্ট করতে যাচ্ছিলাম, যতক্ষণ না আমি তোমার দেখেছি যা আমার অসম্পূর্ণ সংস্করণটিকেও মারধর করে ... +1
nyuszika7h

9

গণিত, 61 45 39 টি অক্ষর

Range@##~MinimalBy~Last@*FactorInteger&

নামবিহীন ফাংশন হিসাবে অনুমানটির খুব সরল বাস্তবায়ন।

  • পরিসর (অন্তর্ভুক্ত) পান।
  • সমস্ত পূর্ণসংখ্যার ফ্যাক্টর।
  • সর্বনিম্ন, সর্বাধিক প্রধান ফ্যাক্টর অনুসারে সন্ধান করুন।

8

লুয়া - 166 অক্ষর

আমি না (এখনও!) মন্তব্য করতে ছিল না যথেষ্ট খ্যাতি AndoDaan এর সমাধান কিন্তু এখানে তার কোডের উপর কিছুটা উন্নতি হয়

a,b=io.read("*n","*n")s=b for i=a,b do f={}n=i d=2 while n>1 do while n%d<1 do f[#f+1]=d n=n/d end d=d+1 end p=math.max(unpack(f))if p<s then s=p c=i end end print(c)

পরিবর্তনগুলি:

  • n%d==0দ্বারা n%d<1যা এই ক্ষেত্রে সমতূল্য
  • একটি স্থান সরানো হয়েছে
  • table.insert(f,d)দ্বারা প্রতিস্থাপিত f[#f+1]=d ( #fচ এর উপাদানগুলির সংখ্যা)

আহ, খুশী আমি এখানে তাকিয়ে ছিল। আহ, প্রথম দুটি আমার চেক করা উচিত ছিল এবং ধরা পড়েছিল, তবে আপনার তৃতীয় উন্নতি আমার কাছে নতুন (আমি বোঝাতে চেয়েছি তার চেয়ে আলাদা)। এটি আমাকে এখানে এবং গল্ফ.শিন.কম এ আরও অনেক বেশি সহায়তা করবে। ধন্যবাদ!
AndoDaan

8

বাশ + কোর্টিলস, 56 বাইট

seq $@|factor|sed 's/:.* / /'|sort -nk2|sed '1s/ .*//;q'

ইনপুট হ'ল দুটি কমান্ড-লাইন আর্গুমেন্ট থেকে এসেছে (ধন্যবাদ @ nyuszika7h !!!)। আউটপুট একটি একক ফলাফল যা STDOUT এ মুদ্রিত হয়।

  • seq কমান্ড-লাইন আর্গুমেন্টগুলি থেকে প্রতি লাইনে একটি করে পরিসীমা সরবরাহ করে।
  • factorএই সংখ্যাগুলি পড়ে এবং প্রতিটি সংখ্যা আউটপুট করে তার পরে একটি কোলন এবং সেই সংখ্যার মূল কারণগুলির তালিকা অনুসারে বাছাই করা হয়। সুতরাং বৃহত্তম লাইম ফ্যাক্টর প্রতিটি লাইন শেষে হয়।
  • প্রথমটি sedকোলন এবং সমস্ত শেষ / বৃহত্তম প্রধান ফ্যাক্টর বাদ দেয়, সুতরাং প্রতিটি সংখ্যার একটি তালিকা (কলাম 1) এবং এর বৃহত্তম প্রাইম ফ্যাক্টর (কলাম 2) রেখে দেয়।
  • sort সংখ্যাটি কলাম 2 দ্বারা ক্রম বর্ধমান।
  • চূড়ান্ত sedম্যাচের লাইন 1 (সংখ্যা যার বৃহত প্রাইম ফ্যাক্টর তালিকার সবচেয়ে ছোট), প্রথম স্থান সহ এবং তার পরে সমস্ত কিছু সরিয়ে দেয়, তারপরে ছেড়ে যায়। sedপ্রস্থান করার আগে স্বয়ংক্রিয়ভাবে এই প্রতিস্থাপনের ফলাফল মুদ্রণ করে।

আউটপুট:

$ ./smooth.sh 9 15
12
$ ./smooth.sh 9 16
16
$ ./smooth.sh 157 249
162
$ ./smooth.sh 2001 2014
2002
$ 

এই প্রসঙ্গে নোটের ব্যাপ্তি উভয় প্রান্তের পয়েন্ট সহ অন্তর্ভুক্ত


1
seq $@3 বাইট সংক্ষিপ্ত, আপনি যদি ধরে নিতে পারেন যে কেবলমাত্র দুটি যুক্তি রয়েছে।
nyuszika7h

@ nyuszika7h ভাল ধারণা - ধন্যবাদ!
ডিজিটাল ট্রমা

5

পাইথন 2, 67

f=lambda R,F=1,i=2:[n for n in range(*R)if F**n%n<1]or f(R,F*i,i+1)

অন্য গল্ফের কথা ভেবে আমাকে মসৃণতা যাচাই করার জন্য একটি নতুন অ্যালগরিদমের ধারণা দিয়েছে, অতএব দেরিতে উত্তরটি।

ফ্যাক্টরিয়ালটির মূল ফ্যাক্টেরাইজেশনটিতে i!প্রাইমগুলি বেশিরভাগের অন্তর্ভুক্ত থাকে i। সুতরাং, যদি nস্বতন্ত্র প্রাইমগুলির পণ্য হয় তবে এর মসৃণতা (বৃহত্তম প্রাইম ফ্যাক্টর) সবচেয়ে ছোট iযার জন্য এটির nবিভাজক i!। এর পুনরাবৃত্তি মৌলিক কারণগুলির জন্য অ্যাকাউন্ট করার জন্য n, আমরা এর পরিবর্তে যথেষ্ট উচ্চ শক্তি ব্যবহার করতে পারি i!। বিশেষত, (i!)**nযথেষ্ট

কোডটি ক্রমবর্ধমানভাবে F=i!আপডেট হওয়া, ক্রমবর্ধমান ফ্যাকটোরিয়ালগুলির চেষ্টা করে । আমরা Fইনপুট সীমাতে বিভাজনকারীদের জন্য ফিল্টার করি এবং যদি কোনও থাকে তবে সেগুলি আউটপুট করি এবং অন্যথায় এগিয়ে যান (i+1)!

পরীক্ষা ক্ষেত্রে:

>> f([157, 249])
[162, 192, 216, 243]

4

সি,  149   95

সম্পাদিত উত্তর:

আমি এই সমাধানের জন্য কৃতিত্ব দাবি করতে পারি না। এই আপডেট হওয়া উত্তরটি তার পাইথন দ্রবণে ইসাক দ্বারা ব্যবহৃত সুন্দর পদ্ধতিটি ধার করে । আমি দেখতে চেয়েছিলাম যে কোনও কোঁকড়ানো ধনুর্বন্ধনী ছাড়া নেস্টেড for/ whileলুপ হিসাবে এটি সিতে লেখা সম্ভব কিনা এবং এটি!

R(a,b,n,q,p,m){for(;a<b;m=p<q?a:m,q=p<q?p:q,n=++a,p=2)while(n>1)if(n%p)p++;else n/=p;return m;}

ব্যাখ্যা:

  • ফাংশন R(a,b,n,q,p,m)পরিসীমা স্ক্যান aকরতে b-1দেখলেন প্রথম smoothest সংখ্যা ফেরৎ। আবাহন নিম্নলিখিত ফর্ম আনুগত্য প্রয়োজন: R(a,b,a,b,2,0)যাতে ফাংশন ভিতরে ভেরিয়েবল কার্যকরভাবে সক্রিয়া করা হয় নিম্নরূপ: n=a;q=b;p=2;m=0;

আসল উত্তর :

এটি আমার আসল উত্তর ছিল ...

P(n,f,p){for(;++f<n;)p=p&&n%f;return p;}
G(n,f){for(;--f>1;)if(n%f==0&&P(f,1,1))return f;}
R(a,b,p,n){for(;++p;)for(n=a;n<b;n++)if(G(n,n)==p)return n;}

ব্যাখ্যা:

  • ফাংশন আদিমতার জন্য P(n,f,p)মান পরীক্ষা করে nএবং nপ্রাইম বা মিথ্যা (শূন্য) যদি nঅ-মৌলিক হয় তবে সত্য (ননজারো) প্রদান করে । fএবং pউভয়ই 1 হিসাবে পাস হতে হবে।
  • ফাংশন G(n,f)সর্বশ্রেষ্ঠ মৌলিক উত্পাদক ফেরৎ nfহিসাবে পাস করা আবশ্যক n
  • ফাংশন R(a,b,p,n)পরিসীমা স্ক্যান aকরতে b-1দেখলেন প্রথম smoothest সংখ্যা ফেরৎ। pঅবশ্যই 1 হিসাবে পাস nকরতে হবে যে কোনও মান হতে পারে।

পরীক্ষামূলক চালক:

test(a,b){printf("smooth_range(%d, %d)\n%d\n",a,b,S(a,b,1,0));}
main(){test(5,11);test(9,16);test(9,17);test(157,249);test(2001,2014);}

আউটপুট:

smooth_range(5, 11)
8
smooth_range(9, 16)
9
smooth_range(9, 17)
16
smooth_range(157, 249)
162
smooth_range(2001, 2014)
2002

"ইনপুটটিতে কোনও অতিরিক্ত এনকোডিং নেই" ধারাটিতে এই ঝরনাটি খারাপ লাগবে।
অ্যালকিমিস্ট

@ আলচিমিস্ট - আপনি ঠিক থাকতে পারেন ... তবে আমি মনে করি না যে ছদ্ম-যুক্তিতে সত্যিকারের অতিরিক্ত কোনও তথ্য আছে। কমপক্ষে কোনও তথ্য যা উত্তর সম্পর্কে কোনও ধরণের ক্লু নয়।
টড লেহম্যান

4

হাস্কেল - 120

import Data.List
import Data.Ord
x!y=(minimumBy(comparing(%2)))[x..y]
x%y|x<y=y|x`mod`y==0=(x`div`y)%y|otherwise=x%(y+1)

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

> 5 ! 10
8
> 9 ! 15
9
> 9 ! 16
16
> 157 ! 248
162
> 2001 ! 2013
2002

1
আপনি ব্যবহার করা যায়নি <1পরিবর্তে ==0?
dfeuer

হ্যাঁ, এটি একটি দুর্দান্ত উন্নতি হবে। আরও অনেক ছোট ছোট জিনিস রয়েছে যা আরও ভাল করা যায়। ভাগ্যক্রমে এই উত্তরটি ইতিমধ্যে তাদের সমস্তটি
টেলর ফাউসাক

4

প্রশ্ন, 91 অক্ষর কে, 78 টি অক্ষর

{(x+{where x=min x}{(-2#{x div 2+(where 0=x mod 2_til x)@0}\[{x>0};x])@0}'[(x)_til y+1])@0}

k সম্ভবত এক ডজন অক্ষর শেভ করবে

সম্পাদনা: প্রকৃতপক্ষে, এই সময় উপরের সীমানাকে অ-অন্তর্ভুক্ত হিসাবে বিবেচনা করুন

{*:x+{&:x=min x}{*:-2#{6h$x%2+*:&:x={y*6h$x%y}[x]'[2_!x]}\[{x>0};x]}'[(x)_!y]}

4

দ্রষ্টব্য: এই উত্তরটি অনুমোদিত নয়।

এই উত্তরটি চ্যালেঞ্জ জিজ্ঞাসার পরে পাইথের একাধিক বৈশিষ্ট্য যুক্ত করেছে।

আমি আরও একটি নতুন বৈশিষ্ট্য যুক্ত করেছি, 2 এলিমেন্ট টিউপলে অ্যানারি রেঞ্জকে কল করে এটি সমাধানটিকে দুটি অক্ষর দ্বারা সংক্ষিপ্ত করে এনে:

পাইথ , 7

hoePNUQ

ইনপুট এখন কমা পৃথক করা হয়। বাকিগুলিও একই রকম।


এই উত্তরটি পাইথের একটি বৈশিষ্ট্য ব্যবহার করে যা এই প্রশ্নটি যুক্ত হওয়ার পরে যুক্ত হয়েছিল, বিশেষত @ অ্যাডিটসুর দুর্দান্ত সিজেএম সমাধান দেখে solution বলা হচ্ছে, আমি বৈশিষ্ট্যটি প্রদর্শন করতে চেয়েছিলাম কী কী বৈশিষ্ট্যটি যুক্ত করেছে এটি সম্ভব হয়েছে। বৈশিষ্ট্যটি হ'ল Pএটি একটি আরিটি -১ ফাংশন যা পূর্ণসংখ্যার ইনপুটটিতে ইনপুটটির সমস্ত প্রধান উপাদানগুলির একটি তালিকা প্রদান করে, ক্ষুদ্রতম থেকে বড় আকারে সাজানো।

পাইথ , ৯

hoePNrQvw

পাইথন-শৈলীর ব্যাপ্তিগুলি ব্যবহার করে, STDIN এ পৃথক করা নতুন লাইন। STDOUT- র সবচেয়ে ছোট সমাধান আউটপুট দেয়।

ব্যাখ্যা:

      Q = eval(input())                         Implicit, because Q is present.
h     head(                                     First element of
 o         order_by(                            Sort, using lambda expression as key.
                    lambda N:                   Implicit in o
  e                          end(               Last element of
   PN                            pfact(N)),     List containing all prime factors of N.
  r                 range(                      Python-style range, lower inc, upper exc.
   Q                      Q,                    A variable, initialized as shown above.
   vw                     eval(input()))))      The second entry of the range, same way.

পরীক্ষা:

$ newline='
'

$ echo "9${newline}16" | ./pyth.py -c 'hoePNrQvw'
9

$ echo "9${newline}17" | ./pyth.py -c 'hoePNrQvw'
16

$ echo "157${newline}249" | ./pyth.py -c 'hoePNrQvw'
162

$ echo "2001${newline}2014" | ./pyth.py -c 'hoePNrQvw'
2002

@ মার্টিনবাটনার ইয়েপ, সিজোম সমাধান সম্পর্কে তাঁর মন্তব্য অনুসারে পরামর্শ দিয়েছেন
অ্যাড্রিউব

@ মার্টিনব্যাটনার হ্যাঁ, পি, হ'ল নতুন বৈশিষ্ট্য। আমি এটি উত্তরে রাখব।
isaacg

1
মঞ্জুরিযোগ্য বা না, কেবল এটিই আমি পছন্দ করি না তবে আমি মনে করি যে আপনি যদি মনোযোগ দেন তবে এই সংক্ষিপ্ত "ম্যাক্রোগুলি" পঠনযোগ্য - তারা সর্বোপরি পাইথন রূপান্তরিত করে। গল্ফ ভাষার জন্য এমন কিছু কথা বলতে হবে যা গল্ফের পক্ষে ভাল তবে অবিচ্ছিন্নভাবে অচল করে না।
কুবা ওবার

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

3

লুয়া - 176 টি অক্ষর

a,b=io.read("*n","*n")s=b for i=a,b do f={}n=i d=2 while n>1 do while n%d==0 do table.insert(f, d)n=n/d end d=d+1 end p=math.max(unpack(f))if p<s then s=p c=i end end print(c)

আমার সত্যিই লুয়াতে গল্ফ করা বন্ধ করা উচিত। কোন লাভ নেই।


14
আইএমএইচও, কোড গল্ফিং বক্সিংয়ের মতো: ওজন-শ্রেণি রয়েছে। প্রদত্ত ভাষা সরাসরি জিততে পারে না, তবে এটি শ্রেণি / ভাষার মধ্যে গল্ফকে মজাদার এবং আলোকিত করে।
মাইকেল ইস্টার

3

ক্লোজার - 173 অক্ষর

আমি ক্লোজার নবাগত। Golfed:

(defn g[x,d](if(and(= 0(mod x d))(.isProbablePrime(biginteger d) 1))d 0))(defn f[i](apply max-key(partial g i)(range 2(inc i))))(defn s[a,b](first(sort-by f(range a b))))

নমুনা রান:

রেঞ্জগুলিতে নিম্ন-প্রান্তকে অন্তর্ভুক্ত করা হয়, উচ্চ-প্রান্তটি বাদ দেওয়া হয়: [ক, খ) একাধিক ঘটনা ঘটলে কেবলমাত্র স্মুটেস্ট সংখ্যাগুলির একটি মুদ্রণ করে।

(println (s 5 11))
(println (s 9 16))
(println (s 9 17))
(println (s 157, 249))
(println (s 2001, 2014))

উৎপাদনের:

bash$ java -jar clojure-1.6.0.jar range.clj
8
9
16
192
2002

Ungolfed:

(defn g [x,d] (if (and (= 0(mod x d)) (.isProbablePrime (biginteger d) 1)) d 0))
(defn f [i] (apply max-key (partial g i) (range 2 (inc i))))
(defn s [a,b] (first (sort-by f (range a b))))

1
নিম্ন প্রান্তকে অন্তর্ভুক্ত করে এবং উচ্চ প্রান্তটি বাদ দেয় এমন একটি ব্যাপ্তি সাধারণত [ক, খ) লেখা থাকে।
murgatroid99

হ্যাঁ, দ্রষ্টব্যটির জন্য ধন্যবাদ
মাইকেল ইস্টার

3

রুবি, 65 62

require'prime'
s=->a,b{(a..b).min_by{|x|x.prime_division[-1]}}

Https://codegolf.stackexchange.com/a/36484/6828 এর কাছে ক্ষমা চেয়ে , এটি এর গল্ফড (এবং কিছুটা সরলীকৃত) সংস্করণ। এটি একটি চরিত্রের চেয়ে ছোট হওয়ার কারণে একটি অন্তর্ভুক্ত ব্যাপ্তি ব্যবহার করে।

1.9.3-p327 :004 > s[157,249]
 => 192 
1.9.3-p327 :005 > s[5,11]
 => 8 
1.9.3-p327 :006 > s[9,15]
 => 12 
1.9.3-p327 :007 > s[9,16]
 => 16 

এবং তিনটি অক্ষর সংরক্ষণ করার জন্য ইয়েন দ্য ফার্স্টকে ধন্যবাদ।


1
আপনি [0] ছাড়াই আসলে পালাতে পারবেন, যেহেতু অ্যারের তুলনা প্রথম উপাদানটিকে অগ্রাধিকার দেবে। এটি ভিন্ন, তবে এখনও সঠিক, ফলাফল দেবে।
ইয়েনে ফার্স্ট

3

সি # লিংক: 317 303 289 262

using System.Linq;class P{static void Main(string[]a){System.Console.Write(Enumerable.Range(int.Parse(a[0]),int.Parse(a[1])).Select(i=>new{i,F=F(i)}).Aggregate((i,j)=>i.F<j.F?i:j).i);}static int F(int a){int b=1;for(;a>1;)if(a%++b<1)while(a%b<1)a/=b;return b;}}

Ungolfed:

using System.Linq;

class P
{
  static void Main(string[]a)
  {
    System.Console.Write(
      Enumerable.Range(int.Parse(a[0]), int.Parse(a[1])) //create an enumerable of numbers containing our range (start, length)
        .Select(i => new { i, F = F(i) }) //make a sort of key value pair, with the key (i) being the number in question and the value (F) being the lowest prime factor
        .Aggregate((i, j) => i.F < j.F ? i : j).i); //somehow sort the array, I'm still not entirely sure how this works
  }
  static int F(int a)
  {
    int b=1;
    for(;a>1;)
      if(a%++b<1)
        while(a%b<1)
          a/=b;
    return b;
  }
}

এটি কমান্ড লাইন থেকে শুরু এবং দৈর্ঘ্য গ্রহণ করে এবং বৃহত্তম মসৃণ সংখ্যা প্রদান করবে।

আমি নিকট থেকে উত্তর ব্যবহৃত এখানে এবং এখানে আমার উত্তর করা।

এটি দেখার জন্য এবং 12 বাইট অফ শেভ করার জন্য ভিজুয়ালমেলনকে ধন্যবাদ! আমি যদি 2 বাইট সংরক্ষণ করি তবে আমি ব্রেসগুলি থেকে মুক্তি পেয়েছি, এবং কোডইনচায়োস আমি মিস করা কিছু স্পষ্ট জিনিস তুলে ধরেছি (আবার ধন্যবাদ)।


কয়েকটি সাধারণ উদ্দেশ্যে ছোট ছোট জিনিস, আপনি মিটার Fসংজ্ঞা দিয়ে 4 বাইট সংরক্ষণ করতে পারবেন int b। স্থান দুয়েক আপনি তুলনা সঞ্চালন a%b==0, এবং aএবং bসবসময় ইতিবাচক যদি এটা কম 1 তুমি চেক করে প্রত্যেকের জন্য একটি বাইট কাটা যায় a%b<1। এছাড়াও আপনি একটি বাইট বৃদ্ধিশীল দ্বারা সংরক্ষণ করতে পারেন bযদি এর অবস্থায় a%++b<0বরং তুলনায় 1. আমিও এই ক্ষেত্রে মনে হয় এটা সস্তা মাত্র সম্পূর্ণরূপে যোগ্যতা তা আরম্ভের দ্বারা System.Console.WriteLineএবং এড়ানো namespaceদফা।
ভিজ্যুমেলন

@ ভিজুয়ালমেলন ধন্যবাদ, আপনার ধারণাগুলির সাথে আপডেট হয়েছে :)
এলডাম

m=...:m;অজানা যখন লুপ বাইরে পড়ে। অতএব, আপনি ড্রপ করতে পারেন m=0,এবং প্রতিস্থাপন return m;সঙ্গে return m=b>m?b:m;। তারপরে, আপনি m=...:m;পুরোপুরি বাদ দিতে পারেন ।
টমসমেডিং

এটি অদ্ভুত শোনাতে পারে তবে এটি আমার কাছে সিজেএম এবং জে এর চেয়ে কম কম রেডেবল I হুম ....
কুবা ওবার

না আমি সম্মত নই, আপনি যখন এখানে এবং সেখানে দেখেন তখন লিনকিউ একটি দৈত্যের মতো দেখায় এবং প্রকৃতপক্ষে নিজে কখনও এটিকে খেলবে না। একবার আপনি এটি উপলব্ধি করার পরে, এটি সত্যিই দুর্দান্ত :) এটি বলেছে, আমি এখনও পুরোপুরি বুঝতে পারি না কীভাবে Aggregateকাজ করে, আমি কেবল এটির মধ্যে একটি মাত্র ক্ষেত্রের পরিবর্তে আমার নতুন অবজেক্টে পৌঁছানোর জন্য অন্য উত্তরে এটি দেখার পরে চেষ্টা করেছি, এবং এটি কেবল নিখুঁতভাবে কাজ করার জন্য ঘটেছে :)
ld

2

আর, 83

library(gmp)
n=a:b
n[which.min(lapply(lapply(lapply(n,factorize),max),as.numeric))]

যেখানে ইনপুট ব্যাপ্তির নীচে নির্ধারিত হয় aএবং শীর্ষ (সমেত) নির্ধারিত হয় b

gmpCRAN এ উপলব্ধ একটি প্যাকেজ। আমি mfসিজেমে এই অযৌক্তিক ক্রিয়াকলাপটি না হওয়া পর্যন্ত এটি নোংরা অনুভব করেছিল। install.packages("gmp")কনসোলে টাইপ করে ইনস্টল করুন ।


1
আপনি যদি lapply3 বার ব্যবহার করে থাকেন তবে আপনি এটির নাম রাখতে পারেন (যেমন l=lapplyএবং তারপরে ব্যবহার করুন l(...)। একইভাবে যেহেতু factorizeআপনি প্যাকেজ থেকে একমাত্র ফাংশন ব্যবহার করেন gmpআপনি gmp::factorizeগ্রন্থাগারটি লোড না করে ব্যবহার করার পরিবর্তে ব্যবহার করতে পারেন factorize। আপনার কোড এভাবে l=lapply;n=a:b;n[which.min(l(l(l(n,gmp::factorize),max),as.numeric))]69 বাইট হয়ে যাবে ।
প্ল্যানাপাস

2

পাওয়ারশেল - 85

($args[0]..$args[1]|sort{$d=2
while($_-gt1){while(!($_%$d)){$m=$d;$_/=$d}$d++}$m})[0]

এটি প্রতিটি সংখ্যার সর্বোচ্চ প্রাইম ফ্যাক্টরের উপর ভিত্তি করে সংখ্যার (অন্তর্ভুক্ত) ব্যাপ্তি সাজিয়ে দেবে। এটি সর্বনিম্ন বাছাই করা উপাদানটি প্রদান করে।

> smooth 5 10
8
> smooth 9 15
12
> smooth 9 16
16
> smooth 157 248
243
> smooth 2001 2013
2002

2

জে - 16 চর

মন্তব্যের অনুমতি অনুসারে ( শুরু , দৈর্ঘ্য ) স্টাইলের ব্যাপ্তি ব্যবহার করা ।

(0{+/:{:@q:@+)i.

ডায়াডিক ক্রিয়া হিসাবে ব্যবহার করতে: বাম আর্গুমেন্ট শুরু হয় , ডান দৈর্ঘ্য

   5 (+)i. 6              NB. range
5 6 7 8 9 10
   5 (q:@+)i. 6           NB. prime factorizations
5 0 0
2 3 0
7 0 0
2 2 2
3 3 0
2 5 0
   5 ({:@q:@+)i. 6        NB. largest prime factors
5 3 7 2 3 5
   5 (+/:{:@q:@+)i. 6     NB. sort range by smallest factors
8 6 9 5 10 7
   5 (0{+/:{:@q:@+)i. 6   NB. take first entry
8
   f=:(0{+/:{:@q:@+)i.    NB. can also be named
   2001 f 13
2002

একটি ( শুরু , শেষ ) সমাধানটি +2 অক্ষর হয় এবং শেষটি বাদ দেয়; শেষ সহ +2 আরও রয়েছে including তবে উজ্জ্বল দিকে, এটি দুর্দান্ত দেখায় যেহেতু আমরা সমস্ত "ব্রেসেস" মেলে}

(0{}./:{:@q:@}.)i.    NB. excluding
(0{}./:{:@q:@}.)1+i.  NB. including

2

সিরিয়াসলি, 8 * 14/7 = 16 (অপ্রতিযোগিতামূলক)

,x;`yM`M;m@í@E

গুরুতরভাবে এই চ্যালেঞ্জের পরে তৈরি করা হয়েছিল, তবে আমি এই উত্তরটি পোস্ট করতে চেয়েছিলাম কারণ এটি চ্যালেঞ্জগুলির ধরণের উদাহরণটির উদাহরণ দেয় যে গুরুতরভাবে ভাল।

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

ব্যাখ্যা:

,x;`yM`M;m@í@E
,x;             make two copies of range(a,b) (a,b = input())
   `  `M;       make two copies of the result of the map:
    yM            push maximum prime factor
         m@í    push index of minimum element from prime factors
            @E  push element from range with given index

2

পাইথ , 7 বাইট

.mePbrF

এখানে চেষ্টা করুন!

[a,b)[a,b]}r

.mePbrF – Full program with arguments a and b.
     rF – Fold by half-inclusive range. Yields the integers in [a, b).
.m      – Values b in that list which give minimal results when applied f.
  ePb   – function / block f. 
   Pb   – Prime factors of b.
  e     – Last element. This is guaranteed to yield the largest, as they're sorted.

1

কোবরা - 150

def f(r as vari int)
    x,y=r
    c,o=y,0
    for n in x:y,for m in n:0:-1
        p=1
        for l in 2:m,if m%l<1,p=0
        if n%m<=0<p
            if m<c,c,o=m,n
            break
    print o

কেন আমি বিরক্ত করলাম তাও নিশ্চিত নয়, কোবরা এখানে প্রতিযোগিতা করতে পারে না।


1
অজগরকে দেখতে কোবরা দেখতে একরকম ... পার্থক্য কী?
বিটা ক্ষয়

@ বেটাডেকে কোব্রা হ'ল আপনি সি # পাইথনের বাক্য গঠনটি দিলে যা ঘটে। কোবরা ওয়েবসাইট
অগ্রে

1

রুবি - 113 অক্ষর

Stdlib ব্যবহার করে। একটি ফলাফল ফেরত দেয়। রুবি ২.১.২ এ পরীক্ষা করা হয়েছে।

require 'prime'
def smooth_range(a,b)
  (a...b).sort_by{|e|e.prime_division.flat_map{|f,p|[f]*p}.uniq.max}[0]
end

1
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্ট্যাক এক্সচেঞ্জে আপনাকে স্বাগতম। আপনার ফলাফল পোস্ট করার জন্য ধন্যবাদ। যেহেতু এটি একটি কোড-গল্ফ প্রশ্ন, দয়া করে আপনার উত্তরে আপনার অক্ষর গণনা অন্তর্ভুক্ত করুন। আপনি
এটির

1

পার্ল (5.10+), 83

for(<>..<>){$n=$_;$p=2;$_%$p&&$p++or$_/=$p while$_>1;$m=$p,$r=$n if$p<$m||!$m}
say$r

(লাইন ব্রেক বন্ধ করা যেতে পারে)। স্টিডিনের দুটি লাইনে একটি অন্তর্ভুক্ত ব্যাপ্তির দুটি শেষ পয়েন্ট নেয় (কারণ <>অ্যাক্সেসের চেয়ে সস্তা ARGV) এবং স্টুডাউটের স্মুথেষ্টকে আউটপুট দেয়। স্মুথেষ্টের জন্য যদি টাই থাকে তবে সবচেয়ে ছোটটি মুদ্রণ করে। একটি অক্ষরের ব্যয় সবচেয়ে বড় মুদ্রণ করতে পারে।

অ্যালগরিদম মূলত isaacg এর সর্বাধিক প্রধান মৌলিক ফ্যাক্টর সন্ধানের উপায়, যদিও আমরা স্বাধীনভাবে এটি নিয়ে এসেছি। এই অংশটি পার্লের একক বিবৃতিতে খুব সুন্দরভাবে গল্ফ করে, বাকিগুলির আমার চেয়ে বেশি ওভারহেড রয়েছে।

perl -Eএকটি use 5.012preamble অধীনে বা চালানো উচিত । যদি আপনি এটি করতে না পারেন তবে এটির say$rসাথে প্রতিস্থাপন করুন print$r,$/


1

পাইথন 2 (84)

f=lambda n,p=2:n>1and f(n/p**(n%p<1),p+(n%p>0))or p
print min(range(*input()),key=f)

@ আইস্যাকের সমাধান , তবে minস্পষ্টভাবে মিনি-সন্ধানের জায়গায় ফাংশন কী সহ এবং পুনরাবৃত্তির ভূমিকাটি পুনরাবৃত্তির ভূমিকা পালন করে।

পুনরাবৃত্তি সীমা এড়ানোর জন্য স্ট্যাকলেস পাইথনে চালান ।

প্যারান্থেসাইজড শর্তটি ব্যবহার করা অযথা মনে হচ্ছে (n%p<1), তার পরও এটি পরিত্যক্তিতে পুনরাবৃত্তি করবে (n%p>0), তবে এটি আমার সেরা ছিল। আমি জিনিসগুলিকে একগুচ্ছ জিনিস চেষ্টা করেছি, তবে সেগুলি আরও খারাপ হয়ে গেছে।

f(n/p**(n%p<1),p+(n%p>0))     # Current for comparison
f(*[n/p,n,p,p+1][n%p>0::2])
n%p and f(n,p+1)or f(n/p,p)
f(*n%p and[n,p+1]or[n/p,p])

আপনি যে কোনও উন্নতি ভাবতে পারেন তা আমি স্বাগত জানাই।


1

জাভা 8 - 422 454 অক্ষর

আমি জাভা 8 শিখছি, এবং এটি জাভা (বা এমনকি জাভা 8 স্ট্রিম) এর সাথে শট দিতে চেয়েছি।

অন্যান্য ভাষার তুলনায় এটি নিষ্ঠুর তবে একটি আকর্ষণীয় অনুশীলন।

Golfed:

import java.util.stream.*;import java.math.*;
class F{int v;int i;public int getV() { return v; }
F(int i){this.i = i;v=IntStream.range(2,i+1).map(j->((i%j==0)&&new BigInteger(""+j).isProbablePrime(1))?j:0).max().getAsInt();}}
public class T{
int s(int a, int b){return IntStream.range(a,b+1).boxed().map(F::new).sorted(java.util.Comparator.comparingInt(F::getV)).collect(java.util.stream.Collectors.toList()).get(0).i;}}

Ungolfed:

import java.util.stream.*;
import java.math.*;

class F {
    int v;
    int i;
    public int getV() { return v; }
    F (int i) { 
        this.i = i;
        v = IntStream.range(2,i+1)
                     .map( j -> ((i%j==0) && 
                           new BigInteger(""+j).isProbablePrime(1))?j:0)
                     .max()
                     .getAsInt();
    }
}

public class T {
    int s(int a, int b) {
        return IntStream.range(a,b+1)
                    .boxed()
                    .map(F::new)
                    .sorted(java.util.Comparator.comparingInt(F::getV))
                    .collect(java.util.stream.Collectors.toList())
                    .get(0).i;
    }
}

উদাহরণ ব্যবহার করে চালান:

public static void main(String[] s) {
    System.out.println(new T().s(157,249));
}

192

1

এমএটিএল ( অ-প্রতিযোগিতামূলক ), 20 বাইট

এই ভাষাটি চ্যালেঞ্জের পরে তৈরি করা হয়েছিল

উভয় প্রান্তে ব্যাপ্তি অন্তর্ভুক্ত। সংখ্যা দুটি পৃথক ইনপুট হিসাবে নেওয়া হয়।

2$:t[]w"@YfX>v]4#X<)

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

ব্যাখ্যা

2$:          % implicitly input two numbers. Inclusive range
t            % duplicate                      
[]           % empty array
w            % swap elements in stack         
"            % for each                  
  @          %   push loop variable
  Yf         %   prime factors                  
  X>         %   maximum value
  v          %   vertical concatenation         
]            % end for each                         
4#X<         % arg min 
)            % index with this arg min into initial range of numbers

আমার ধারণা আজ এটি 17 বাইট &:[]y"@YfX>h]&X<)বা সম্ভবত 16 হবে :[]y"@YfX>h]&X<)&সত্যিই একটি মহান ধারণা ছিল (এবং আমি করছি মনন yতখন উপলব্ধ ছিল না?)।
সুন্দরের

এবং দেখে মনে হচ্ছে Yfপ্রিফিক্সড 1 এর সাথে সম্প্রচারটি এখানেও দরকারী হতে পারে তবে এটি সাধারণভাবে একটি ভাল ধারণা সিদ্ধান্ত নেওয়ার পক্ষে যথেষ্ট নয়। :)
সুন্দরের

হ্যাঁ, এটি খুব শুরু ছিল, তাই না yবা &। পরেরটির খুব দরকারী শব্দার্থক শব্দগুলির জন্য সুয়েভারকে ক্রেডিট (আমার প্রাথমিক ধারণাটি এটি "ডিফল্টর চেয়ে বেশি একটি ইনপুট" বোঝানো হয়েছিল)। যদি আমরা আরও উদাহরণগুলি দেখতে পাই যেখানে সংযোজনগুলির Yfসাথে দরকারী হবে, তবে এটি বৈশিষ্ট্যটি যুক্ত করা সত্যিই উপযুক্ত। সমস্যাটি হচ্ছে, প্রায় 34 টি উত্তর রয়েছে যা ব্যবহার করে Yf( এই স্ক্রিপ্ট অনুসারে ), সুতরাং এটি বলা শক্ত
লুইস মেন্ডো

1

জেলি , 7 বাইট, স্কোর = 7 ÷ 7 × 8 = 8, ভাষা পোস্টডেটস চ্যালেঞ্জ

rÆfṀ$ÐṂ

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

নিম্ন এবং উপরের রেঞ্জের সমাপ্তিগুলি দুটি পৃথক যুক্তি হিসাবে গ্রহণ করে T পরিসরের সমস্ত স্মুটেস্ট সংখ্যার একটি তালিকা আউটপুট করে। (এটি কোনও ফাংশন হিসাবে দেখা যায়, এক্ষেত্রে আউটপুটটি জেলি তালিকা, বা পুরো প্রোগ্রাম হিসাবে, এই ক্ষেত্রে আউটপুটটি জেএসএন-র অনুরূপ তালিকা প্রতিনিধিত্ব ব্যবহার করে happens

ব্যাখ্যা

আপনার জেলি প্রোগ্রামটি সেই সময়ের জন্য কেবলমাত্র আক্ষরিক অনুবাদ ...

rÆfṀ$ÐṂ
r        Range from {first argument} to {second argument}
     ÐṂ  Return the elements which have the minimum
   Ṁ$      largest
 Æf          prime factor
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.