পুলিশ এবং ডাকাতদের হার্ডকোডিং (ডাকাত)


12

এটি একটি চ্যালেঞ্জ। এই চ্যালেঞ্জের পুলিশগুলির থ্রেডটি এখানে

ভাবতে আগ্রহী একটি প্রশ্ন নিম্নলিখিত:

আমার যদি সংখ্যার ক্রম থাকে তবে আমি তাদের কতটি সরবরাহ করতে হবে তা পরিষ্কার হওয়ার আগে আমি কোন অনুক্রমের কথা বলছি?

উদাহরণস্বরূপ, যদি আমি থেকে শুরু করার জন্য ইতিবাচক পূর্ণসংখ্যার বিষয়ে কথা বলতে চাই , আমি বলতে পারি , তবে এটি কি যথেষ্ট?11,2,3,

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

চ্যালেঞ্জ

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

  • কোডের একটি অংশ যা ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যার গ্রহণ করে এবং আউটপুট হিসাবে একটি পূর্ণসংখ্যা উত্পাদন করে। এই কোডটি শূন্য বা একটি সূচকযুক্ত হতে পারে তবে সূচীটি কী তা পরিষ্কার হওয়া উচিত। এই কোডটি আপনার ক্রম সংজ্ঞায়িত করবে।

  • যে কোনও প্রাসঙ্গিক প্ল্যাটফর্ম বা ভাষার প্রয়োজনীয়তা যা আউটপুটকে প্রভাবিত করতে পারে, উদাহরণস্বরূপ দ্রাঘিমাংশের আকার।

  • কোড দ্বারা গণনা করা অনুক্রমের প্রথম পদগুলির সাথে একটি সংখ্যা । এগুলি "টেস্ট-কেস" হিসাবে কাজ করবে।nn

ডাকাতরা একই ভাষায় এমন একটি প্রোগ্রাম সন্ধান করবে যা উপস্থাপিত ব্যক্তির চেয়ে কম এবং সমস্ত পরীক্ষার কেস পাস করে ( পুলিশের কোড হিসাবে প্রথম ইনপুটগুলির জন্য একই আউটপুট উত্পাদন করে) produces ডাকাতটির কোডটি চেয়ে বড় কিছু সংখ্যার জন্য কপির প্রোগ্রাম থেকে আউটপুটটিতে অবশ্যই পৃথক হতে পারে ।nn

স্কোরিং

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


2
আমরা লেট না তো ডাকাত উত্তর (অর্থাত সবচেয়ে কম ক্র্যাক ভাষায় বিজয়ী) ক্রেকিং জন্য একে অপরের বীট
fənɛtɪk

@ fəˈnɛtɪk সাউন্ডস, ভাল আমি এটি যোগ করেছি।
অ্যাডহক গার্ফ হান্টার

উত্তর:



5

জাভাস্ক্রিপ্ট, fəˈnɛtɪk এর উত্তর (17 বাইট)

x=>"11237"[x]||22

আচ্ছা এটা হার্ডকোড সহজ ছিল অনেক কম স্কোর ... কোন এন্ট্রির জন্য রেফারেন্স বাস্তবায়ন থেকে পৃথক প্রাপ্ত , 0-ইন্ডেক্স। এটি খুব সুপরিচিত জেএস গল্ফিং ট্রিক ব্যবহার করে: এটির সীমা অতিক্রম করে এমন একটি পূর্ণসংখ্যার সাথে সিকোয়েন্সে ইনডেক্সিং একটি মিথ্যা মান ( ) দেয়, তাই এটি কেবল লজিকাল ওআর ( ) ব্যবহার করে একটি ডিফল্ট মানকে জোর করা যায় this কেস , সিকোয়েন্সের শেষ পদের হ্যান্ডলিং করে তবে তাদের অনুসরণ করতে হবে।x6undefined||22

পরীক্ষামূলক

let f=x=>"11237"[x]||22

for (x of [1,2,3,4,5,6,7]) {
  console.log(x + ' -> ' + f(x))
}

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


4

হাস্কেল , লাইকোনির উত্তর , 15 বাইট

b n=n*div(n+1)2

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

আমি সাধারণত একটি মন্তব্যে এ জাতীয় কিছু উল্লেখ করব তবে তারপরে আমি ভাবলাম, পুলিশ এবং ডাকাতরা কিছুটা বেশি কাটছে।

এটি কেবল বিএমওর উত্তর মাইনাসের জন্য বিশেষ ক্ষেত্রে b 42। লাইকোনির মূল ভাসমান বিন্দুতে চলে যাওয়ার কারণে এটি প্রয়োজনীয় নয়: কেবলমাত্র Integerগাণিতিক ত্রুটি দিতে যথেষ্ট সংখ্যককে খুঁজে বের করুন তবে সঠিক গাণিতিক ক্ষেত্রে নয়। উদাহরণ স্বরূপ:

a 100000000000000000000000 = 4999999999999999580569600000000000000000000000
b 100000000000000000000000 = 5000000000000000000000000000000000000000000000

আমি ভেবেছিলাম যে এটি সম্ভব হতে পারে (অতএব আমি লিখেছি যে এটি প্রয়োজনীয় পদগুলির জন্য আবারও লেখা যেতে পারে) তবে এটির জন্য কোনও মূল্য খুঁজে পাওয়া যায় নি ... সুন্দরভাবে সম্পন্ন হয়েছে!
ბიმო

4

পাইথন 2 , এক্সনরের উত্তর , 43 বাইট

প্রথম পার্থক্যটি জন্য ঘটে :n=69

f=lambda n,p=2:n<1or-~f(n-(~-2**p%p<2),p+1)

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

ক্রেডিট

এই ক্র্যাক জন্য ক্রেডিট একটি বড় চুক্তি যেতে হবে @ Mr.Xcoder যারা প্রথম এই পদ্ধতি ব্যবহার করে একটি সম্ভাব্য আক্রমণ, এবং সম্পর্কে একটি মন্তব্য পোস্ট @PoonLevi এমন একজন 44-বাইট সমাধান পাওয়া যায় নি।

কিভাবে?

তত্ত্ব

pap

(1)ap11(modp)

বিশেষত, :a=2

2p11(modp)

সুতরাং এখানে কিছু ইতিবাচক পূর্ণসংখ্যা উপস্থিত রয়েছে যা:k

2p1=kp+1

যা বাড়ে:

2p=2kp+2
2p1=2kp+1
(2)2p11(modp)

এই শেষ সূত্রটি হ'ল পাইথন কোডটি একটি থেকে উদ্ভূত হয়েছে এবং এখন জন্য ধারণ করে , যদিও নিজেই তুলনামূলকভাবে প্রধান নয়।p=22

an11(modn)na

2n=341=11×31

234111(mod341)
234111(mod341)

341347

বাস্তবায়ন

(2)

f=lambda n,p=1:n and-~f(n-(~-2**p%p==1),p+1)

<2==112110(mod1)

f=lambda n,p=1:n and-~f(n-(~-2**p%p<2),p+1)

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

p=2

f=lambda n,p=2:n and-~f(n-(~-2**p%p<2),p+1)

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

শেষ কৌশলটি n<1orপরিবর্তে ব্যবহার করা হয় n and। এটি ঠিক ততক্ষণ দীর্ঘ কিন্তু শেষ পুনরাবৃত্তিটি 0 এর পরিবর্তে সত্য করে দেয়, সুতরাং প্রতিটি পদটিতে অনুপস্থিত অফসেট যুক্ত করে।


তোমাদের সবাইকে অভিনন্দন! আমার মনে এই সমাধানটি। আমি মনে করি এটি মজার বিষয়, চ্যালেঞ্জের অনুপ্রেরণা থেকে "আমি যদি কোন ক্রমের কথা বলছি তা পরিষ্কার হওয়ার আগে আমি তাদের মধ্যে কতগুলি সংখ্যার ক্রম সরবরাহ করব?", প্রথম 50 টি প্রাইম সম্ভবত আপত্তি যথেষ্ট নয় - পাইথন-গল্ফিং এলিয়েন ধরে নিবে আপনি অন্যরকম ক্রমিকের কথা বলছেন।
xnor

@xnor আমি একটি "পাইথন-গল্ফিং এলিয়েন" ধারণাটি পছন্দ করি
ডাইলানান



2

হাস্কেল , লাইকোনির উত্তর , 26 22 বাইট

ইনফিক্স ব্যবহার না করে -4 বাইট div, লাইকোনিকে ধন্যবাদ !

b 42=0;b n=n*div(n+1)2

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

ব্যাখ্যা

0n20ceiling(realToFrac n/2)div(n+1)2n>20

b 42=0

আহ, আমি এটা ভাবিনি। আমার কিছুটা ভিন্ন পদ্ধতি রয়েছে যা আপনি আরও কিছু ধাঁধা দিতে চাইলে 20 বাইট ক্র্যাক হয়। এছাড়াও ((n+1)`div`2)-> div(n+1)2
লাইকনি

@ লাইকনি: হ্যা এখনও তা প্রকাশ করবেন না! উফস, হ্যাঁ বেশ কিছুক্ষণ হয়েছে যেহেতু আমি কিছু গল্ফ করেছিলাম, আমি এটি আপডেট করব।
0

2

> <> , ক্র্যাশজের উত্তর 203 বাইট

:l2-$g:0=?;n:





M
-
B
"
BM
",
7M
!"
BBM
!",
7CM
!"-
BBBM
!!",
7BBMM
!!,,
7BBBMM
!!,,
7BBBMM
!!!,,
7BBBBMM
!!!,,
7BBBBMM
!!!!,,
7BBBBBMM
!!!!,,
7BBBBBMM
!!!!!,,
7BBBBBBMM

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

আমি n=20কেন্দ্রের একটি পুনরাবৃত্ত উপাদান ব্যতীত উপরের বিজোড় / এমনকি সংখ্যার সমান ছিল এমন সত্য দিয়ে কিছু চালিয়ে যাচ্ছিলাম তবে প্রতিটি উপাদানকে কেবল হার্ড কোড করা সহজ ছিল।

ইনপুট -vপতাকা মাধ্যমে হয় । 34 এর উপরে উপাদানগুলির জন্য কিছুই মুদ্রণ করে না।


2

পাস্কাল (এফপিসি) , আলেকজ্যাকার এর উত্তর , 80 বাইট

var n,m:word;begin read(n);while n<>0 do begin n:=n div 2;m:=m+n;end;write(m)end.

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

0n120n=128127126

এটি একটি দেরিতে উত্তর বলে মনে হচ্ছে, তবে যাইহোক একটি ভাল ধাঁধার জন্য @ অ্যালেক্সারেসারকে ধন্যবাদ!


1
বাহ, এটি আমার যা ছিল তার চেয়েও খাটো। পিপিসিজিতে আপনাকে স্বাগতম!
অ্যালেক্সরেসার

1

জাভাস্ক্রিপ্ট, fəˈnɛtɪk এর উত্তর (12 বাইট)

x=6

x=>2.72**x|0

পরীক্ষামূলক

g=
x=>2.72**x|0

tmp=[0,1,2,3,4]
console.log(tmp.map(g).join(','))

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


1

জাভাস্ক্রিপ্ট, fəˈnɛtɪk এর উত্তর (17 বাইট)

15

x=>2.7182819**x|1

n1415x=>Math.exp(x)|1

পরীক্ষামূলক

f=x=>2.7182819**x|1
g=x=>(3-(5/63)**.5)**x|1

tmp=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
console.log(tmp.map(f).join(","))
console.log(tmp.map(g).join(","))

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


1

হুস , বিএমওর 5 বাইট  3  3 বাইট সহ ক্র্যাক করছে

-1 বিএমওকে ধন্যবাদ ( LdΣ-> যেহেতু, যখন দেওয়া হয় Tnum, L"স্ট্রিং উপস্থাপনার দৈর্ঘ্য" সম্পাদন করে)

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

a(0)a(23)a(24)
3←d+164

T(0)=010


অভিনন্দন, এটাই ছিল আমার সঠিক সমাধান! তবে আমি কেবল লক্ষ্য করেছি যে টিএনএম এর জন্য Lএবং আপনাকে বাইট সংরক্ষণের Ld সমতুল্য ;)
ბიმო

আহ, আমি ডিজিটাল-দৈর্ঘ্য সন্ধান করার জন্য উইকিতে "অঙ্ক" সন্ধান করেছি, তবে L"স্ট্রিং প্রতিনিধিত্বের দৈর্ঘ্য" হিসাবে ওভাররাইডগুলি পাইনি Tnum
জোনাথন অ্যালান

(মনে রাখবেন যে এগুলি কেবল অ-নেতিবাচক পূর্ণসংখ্যার সমতুল্য - এর জন্য যথেষ্ট ভাল))
জোনাথন অ্যালান

1

> << , আইডেন এফ পিয়ার্সের উত্তর , 36 বাইট

v101786
i5844
419902
%
>l{:}g:0=?;o:

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

প্রতি লাইনে হার্ডকডযুক্ত প্রতিটি মান সহ আরও একটি সমাধান। যেহেতু মূল উত্তরটিও বেশিরভাগ হার্ড-কোডড ছিল তাই আমি এ সম্পর্কে খুব বেশি অপরাধী বোধ করি না।


0

জাভাস্ক্রিপ্ট, fəˈnɛtɪk এর উত্তর , 23 বাইট

0n14

x=>14-`${73211e9}`[x]|0

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

কিভাবে?

এক্সপ্রেশনটি `${73211e9}`স্ট্রিংয়ের দিকে প্রসারিত হয় "73211000000000", 14 টি থেকে বাদ দেওয়া 14 টি মানের একটি সারণী সরবরাহ করে, যা প্রত্যাশিত ক্রম দেয়।

n14

(14 - undefined) | 0
=== NaN | 0
=== 0

21 বাইট

NaNn14

x=>14-`${73211e9}`[x]

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

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