আমাকে কিছু উপযুক্ত লাইসেন্স প্লেট তৈরি করুন!


15

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


লাইসেন্স প্লেটে থাকতে পারে না:

  • ASS
  • 666
  • 69<any number here>
  • <any number here>69
  • KKK
  • SHT

বিধি এবং প্রয়োজনীয়তা:

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

সাধারণ নিয়ম

  • উত্তর অন্তর্ভুক্ত করা উচিত , কিন্তু সীমাবদ্ধ নয়, নিম্নলিখিত।
  • ভাষার নাম.
  • চরিত্রের গণনা।
  • ফাইলের আকার.
  • কোডটি কীভাবে চালানো হয়।
  • কোড নিজেই।
  • উদাহরণ: পাইথন 234 অক্ষর বা পাইথন 23mb

আমার যদি কোনও অতিরিক্ত বিবরণ স্পষ্ট করতে হয় তবে দয়া করে মন্তব্যে এটি উল্লেখ করুন এবং আমি এটি আমার পোস্টে যুক্ত করব। যাইহোক, শুভকামনা, এবং আমাকে কিছু উপযুক্ত লাইসেন্স প্লেট উত্পাদন করুন!


আপডেট 1: বিজয়ী কিছুটা আগে বেছে নেওয়া হবে।

দেখা যাচ্ছে আমাকে শীঘ্রই একটি ট্রিপে যেতে হবে, তাই আমি 25 জুলাই ইউটিসি, 25 জুলাইয়ের আশেপাশে বিজয়ী নির্বাচন করব the বাই।


আপডেট 2: বিজয়ীরা!

আমাদের বিজয়ীরা আছে! হ্যাঁ! যারা অংশ নিয়েছে তাদের পনির এবং ওয়াইন! এখানে কে জিতল।

  • 1 ম স্থান: অ্যাঞ্জেল - বাশ (95 টি অক্ষর)
  • দ্বিতীয় স্থান: মার্টিন বাটনার - ম্যাথমেটিকা ​​(182 বাইট)
  • ২ য় স্থান: এমিলিও এম বুমাচার - পিগ (92?)
  • ২ য় স্থান: পিটার টেলর - গল্ফস্ক্রিপ্ট (৯৮ টি অক্ষর)
  • তৃতীয় স্থান: মার্ক থমাস - রুবি (127 টি অক্ষর)

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



2
" একবার এলোমেলো লাইসেন্স প্লেট উত্পন্ন হয়ে গেলে, একই লাইসেন্স প্লেটটি আবার তৈরি করা যায় না " "নন-র্যান্ডম লাইসেন্স প্লেটগুলির কী হবে?
পিটার টেলর

4
এটি করার সুস্পষ্ট উপায় (এবং সম্ভবত এটি বাস্তব জীবনে এটি যেভাবে কাজ করে) তা হল ক্রম সংখ্যা তৈরি করা।
পিটার টেলর

5
"এলোমেলোভাবে উত্পন্ন" অসম্পূর্ণ। আমি মনে করি আপনার মানে "অব্যবহৃত আইনী লাইসেন্স প্লেটগুলি থেকে এলোমেলোভাবে নির্বাচিত" এর চেয়ে বলুন, আইনী লাইসেন্স প্লেটগুলি থেকে শুরু করে অবিচ্ছিন্নভাবে নির্বাচন করা হয়েছেAAA-
পিটার টেলর

1
দয়া করে বলুন যে প্রতিটি প্লেটে কতগুলি সংখ্যা হওয়া উচিত, এবং কোন অক্ষরগুলি বৈধ - এটি দেশ থেকে দেশে পরিবর্তিত হয়
গর্বিত হাস্কেলারের

13
আমি এখন কিছুটা এলোমেলো লাইসেন্স প্লেট যে কিছু অশ্লীল বা অন্যথায় অনুপযুক্ত স্ট্রিং ধারণ জেনারেট করতে একটি প্রোগ্রাম লিখতে প্রলুব্ধ করছি না আপনার তালিকায় পাওয়া যায় নি।
ইলমারি করোনেন

উত্তর:


12

বাশ (95 টি চর)

mএক্সিকিউট করা বিট সেট সহ আপনার প্যাথের ফোল্ডারের মতো স্ক্রিপ্টটি সংরক্ষণ করুন ।

হিসাবে চালান bash m। প্লেটগুলি ফাইল পি-তে সংরক্ষণ করা হয়

l(){ tr -dc $1</dev/urandom|head -c3;};egrep -ve"ASS|666|69|KKK|SHT" -fp>>p<<<`l 0-9`-`l A-Z`;m

এটি নিম্নলিখিত চালনার সমতুল্য:

# Print three random numbers and three random letters
echo $(tr -dc 0-9 < /dev/urandom | head -c3)-$(tr -dc A-Z < /dev/urandom | head -c3) |

# Print only plates not matching the blacklist or any line of p
# Append the plates ton p
egrep -v -e "ASS|666|69|KKK|SHT" -f p >> p

# Execute itself again
m 

ক্যাভেট: শেষ হওয়ার অপেক্ষার প্রক্রিয়া ছেড়ে যাওয়ার জন্য চূড়ান্তটি mআসলে exec m(+5 অক্ষর) হওয়া উচিত (তবে আপনার হাজার হাজার সমস্যা থাকতে পারে)

ব্যবহারের ধারণার জন্য ক্রেডিট http://www.cyberciti.biz/faq/linux-random-password-generator/ এ যায় tr -dc


এটি আমার কাছে বা স্বতন্ত্রতার প্রয়োজনীয়তা অনুপস্থিত?
ক্রিশ্চিয়ান সিউপিতু

1
@ ক্রিশ্চিয়ান-সিউপিটু: grep -vআমরা ইতিমধ্যে উত্পন্ন ব্ল্যাকলিস্ট এবং প্লেটগুলির তালিকা উভয়কে বাদ দিচ্ছি ( grepপি প্রতি লাইন প্রতি একটি প্যাটার্ন রাখার প্রত্যাশা করছে , তবে প্লেটগুলিতে নিয়মিত এক্সপ্রেশন মেটাচার্যাক্টর নেই বলে সেগুলি কেবল নিজের সাথে মেলে)। আমরা কেবল পুনরাবৃত্তি প্রতি এক বা শূন্য প্লেট উত্পন্ন করি, সুতরাং প্রতিটি পুনরাবৃত্তির পরে বাদ দেওয়া প্লেটের সম্পূর্ণ (আপডেট) তালিকা গ্রেপ দ্বারা পঠিত হবে। : ডি
অ্যাঞ্জেল

6

পিওয়াইজি - 92

Pe(Se(Re.sub(".*(666|69|ASS|KKK|SHT).*","",J(RSm(STuc*3,3)+[j]+RSm(STd*3,3)))for j in'-'*K))

আরও 1 টি চরিত্রের দ্বারা সংক্ষিপ্ত হয়ে ওপি'র চশমাগুলি রেখে, সমস্ত অব্যবহৃত প্লেটগুলি থেকে এখন অভিন্ন নির্বাচন করতে সক্ষম।

তাত্ত্বিকভাবে এটি সম্ভব যে 999 প্লেটের তালিকায় পর্যাপ্ত পুনরাবৃত্তি থাকবে যাতে ছাঁটাই করা সেটটি 200 এরও কম হবে But তবে এর প্রতিকূলতা স্বল্পতম। দশটি পরীক্ষায়, আমি যে সর্বনিম্ন দৈর্ঘ্যটি পেয়েছিলাম তা ছিল 994।

সম্পাদনা: বিটপউনারের পরামর্শে দুটি অক্ষর বাঁচাতে 999 কে কে (যা 1000 এর জন্য পাইগ) হয়েছে।


1
আপনি কি অস্বীকৃত মানগুলি ফিল্টার করেছিলেন? কোথাও কোনও KKK বা 666 দেখতে পাবেন না।
ভেক্টরাইজড

5
@ বিটপউনার: আমি কেবল 0 থেকে 5 পর্যন্ত অঙ্কগুলি এবং এ থেকে জেতে চিঠিগুলি ব্যবহার করি, তাই অস্বীকৃত মানগুলি ঘটতে পারে না।
এমিলিও এম বুমাচার

খুব চালাক! কেউ কখনও বলেনি যে এই অন্যগুলি ব্যবহার করতে হবে। খুশী হলাম।
Kjeld Schmidt

1
ওপি র্যান্ডমনেসটিকে "অব্যবহৃত আইনী লাইসেন্স প্লেটগুলি থেকে এলোমেলোভাবে নির্বাচিত" হতে সম্মত হয়েছে। প্রশ্নে মন্তব্য দেখুন। আপনার ইউনিফর্ম সংজ্ঞায়িত না হওয়া পর্যন্ত কোনও ব্যাপ্তি থেকে অভিন্ন। এবং আপনি 2 টি অক্ষর সংরক্ষণ করে 999 কেতে পরিবর্তন করতে পারেন।
ভেক্টরাইজড

3
নিশ্চিত নয় যে আমি বৈধ প্লেটগুলি তৈরি করতে অসম্ভব যদি আউটপুটটিকে এলোমেলো হিসাবে গণনা করি ...
অ্যালকোনজা

5

গণিত, 182 বাইট

ওহ, এই দীর্ঘ

l={};While[Length[l=Union@Pick[l,StringFreeQ[l,"ASS"|"666"|"69"|"KKK"|"SHT"]]]<200,AppendTo[l,RandomSample[FromCharacterCode/@{48+9~(r=RandomInteger)~3,65+25~r~3}]~Riffle~"-"<>""]];l

Ungolfed

l = {};
While[
  Length[
    l = Union@
      Pick[l, StringFreeQ[l, "ASS" | "666" | "69" | "KKK" | "SHT"]]
  ] < 200,
  AppendTo[l, 
   RandomSample[
      FromCharacterCode /@ {48 + 9~(r = RandomInteger)~3, 
        65 + 25~r~3}]~Riffle~"-" <> ""]
  ];
l

অনেকটাই অকপট. এলোমেলো প্লেট উত্পাদন করে এবং 200 টি সন্ধান না পাওয়া পর্যন্ত নকল এবং নিষিদ্ধগুলি ফিল্টার করে।


5

গল্ফস্ক্রিপ্ট (98 টি চর)

260{3?}:^~,{.10^+`-3>'-'+\10^/26^+26base(;{65+}%+.-1%}%{'ASSKKKSHT66669'3/{1$\?)!},*},{,^^rand}$n*

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


4

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

এটি সম্ভবত উন্নত করা যেতে পারে। ফায়ারফক্স কনসোলে পরীক্ষিত।

console.log()আপনি যদি পরীক্ষা করতে চান তবে সেই সতর্কতাটিকে একটিতে পরিবর্তন করুন

r=x=>~~(Math.random()*x)+'';l=x=>[...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'][r(26)];a=[];while(a.length<200)p=r(10)+r(10)+r(10)+'-'+l()+l()+l(),!/ASS|666|69|KKK|SHT/.test(p)&&a.indexOf(p)<0&&a.push(p);a.forEach(x=>alert(x))

বাহ, আমি কোডটি দেখেছি এটি দীর্ঘতম একক লাইন হতে হবে।
ডেটাপিককোডার গুয়ুহোপ্রোগ্রাম

2
@ ডাট্যাপিককডার গুয়াহু প্রোগ্রামগুলি আপনি অবশ্যই আমার 400+ চরের একক-লাইন জেএস রেজেক্স
দেখেন নি

@ এরিক_লাগারগ্রেন দেখে মনে হচ্ছে এটি লিখতে কষ্ট
হচ্ছিল

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

1
@ ডাটপিকিকোডার গুয়াহুপ্রগ্রামগুলি পরে অপ্টিমাইজ করবে। আমি কীভাবে সমস্যাটি সঠিকভাবে সমাধান করতে পারি তারপরে আমি চেষ্টা করে শর্টকাটগুলি সন্ধান করি এবং তারপরে আমি শেষ পর্যন্ত আমার কোডটি অনুকূলিত করি: পি অনেক সহজ
এরিক লেগারগ্রেন

4

রুবি - 136 133 129 টি অক্ষর

অসহ্য। যদিও ভাবুন উন্নতির কোনও জায়গা আছে। কেবল কোডটি ড্রপ করুন irbবা pryচালাতে এন্টার টিপুন:

f=->*t{[0,1,2].map{t.sample}*''}
g=->l{(a=f[*?A..?Z]+?-+f[*?0..?9];l|=[a]if/69|666|ASS|SHT|KKK/!~a)until l.size>199;l}
puts g[[]]

4

রুবি, 127 অক্ষর

একটি "পাঠযোগ্য" রুবি সংস্করণে আমার প্রচেষ্টা:

a=[]
until a.size==200 do
  p="#{rand(899)+100}-#{('A'..'Z').to_a.sample(3).join}"
  a<<p unless p=~/69|666|ASS|SHT|KKK/
end
puts a

নোট করুন যে এটি অনুগত লাইসেন্স প্লেটগুলি উত্পন্ন করে তবে সম্ভাব্য প্লেটের পুরো সেটটি তৈরি করে না (এই উত্তরগুলির বেশিরভাগ হিসাবে)। এটি কোনও প্রয়োজন বলে মনে হয় না।
মার্ক টমাস

4

পাইথন 2.7 - 258 অক্ষর

আমি পেশাদার প্রোগ্রামার বা কিছু না, তাই আমি বলতে পারি যে আমি ফলাফলটি নিয়ে সন্তুষ্ট।

import random as o
r=o.randint
t,j,k=[],0,""
b=["SHT","KKK","ASS","69","666"]
for i in range(200):
 l,j=b[0],b[4]
 while any(w in l for w in b):
  l,j="",""
  for i in range(3):
   l+=chr(r(65,90))
   j+=str(r(0,9))
 t.append(l+'-'+j)
print "\n".join(set(t))

ফাইলসাইজ ৪.০ কে, চালানো python file.py!


না যে করা উচিত passএকটি হতে continue? আপনি 4 এর পরিবর্তে 1 স্পেসে ইন্ডেন্ট করে কিছু
অক্ষরও

এছাড়াও for i in range(0,200):প্রতিস্থাপন করা যেতে পারে for i in range(200):
ক্রিশ্চিয়ান সিউপিতু

@ ক্রিশ্চিয়ানসিপিতু ব্যবহার করার সময় আমি এটি পুরো 200 করতে পারি না continue.. তবে passকৌতুকটি করেছিল। এছাড়াও, এটি সংক্ষিপ্ত। আর যখন আমি চেষ্টা for i in range(200), এটি শুধুমাত্র 199 ^^ আমি তাদের পরে একটি করে গণনা করা হয়েছে করেনি duplicatesপরিবর্তনশীল এবং নির্বাণ duplicates += 1আগে passএবং জন্য ঘটনার বেড়ে চলেছে -তালিকা / স্ট্রিং।
অ্যাডাম

@ ক্রিশ্চিয়ানসিপিতু পরিসীমা (200) সর্বোপরি কাজ করেছে - কোড ব্লকের 4 টি স্পেসটি আসলে \tএবং তাদের 1 স্পেস দ্বারা প্রতিস্থাপনের ফলে চরিত্রের সংখ্যা পরিবর্তন হয়নি ... পরামর্শগুলির জন্য ধন্যবাদ!
আদম

1
একজন ব্যবহারকারী প্রস্তাবিত সম্পাদনাতে কেবল সরানোর জন্য প্রস্তাবিত if k in t: pass, কারণ এটি কিছুই করে না।
ডুরকনব

3

পাইথন - 208

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

import random as r,re
f=r.randint
l=lambda x:chr(f(65, 90))if x else`f(0,9)`
d=set()
while len(d)<200:
 k=f(0,1);j=1-k;c=l(k)+l(k)+l(k)+'-'+l(j)+l(j)+l(j)
 if not(re.search("666|69|ASS|KKK|SHT",c)):d.add(c)

নমুনা আউটপুট:

set(['DQJ-641', '086-QRY', '981-GAZ', 'UHN-718', '114-VMI', 'GLO-887',  ...

3

পাইথন, 252 বাইট

আমার অবদান এখানে। আমি এতে মুগ্ধ, তবে আমি জানি অন্যরা পাইথন দিয়ে আরও ভাল করেছে।

from random import randint as r
f=()
while len(f)<200:
 t=str(r(0,999))
 if not("666" in t or "69" in t):
  u=''.join(chr(r(65,90)) for _ in [1,2,3])
  if not("KKK" in u or "SHT" in u or "ASS" in u):f+=("%s-%s"%(t.zfill(3),u),)
 f=tuple(set(f))
print f

2

পাইথন - 165

যারা আমদানি ...

import random as r,re
j="666|69|ASS|KKK|SHT"
t=r.randint
while len(j)<2e3:
 exec"x="+"chr(t(0,25)+65)+"*3+"'-'"+"+`t(0,9)`"*3
 if not re.search(j,x):print x;j+='|'+x

সংখ্যা বা বর্ণমালা দিয়ে যদি এলোমেলোভাবে শুরু করার প্রয়োজন হয়, যা আমি মনে করি না যে সত্যই প্রয়োজন হয়, তবে 190।

import random as r,re
j="666|69|ASS|KKK|SHT"
t=r.randint
while len(j)<2e3:
 exec"x="+"chr(t(0,25)+65)+"*3+"'-'"+"+`t(0,9)`"*3
 x=x[::r.choice((-1,1))]
 if not re.search(j,x):print x;j+='|'+x


আমি কি পিওয়াইজি পরামর্শ দিতে পারি? gist.github.com/Synthetica9/9796173
এমিলিও এম বুমাচার

আমি 208 টি চরিত্র গণনা করেছি এবং আপনার সমাধানটি কি প্রথমে সংখ্যাগুলিকে অনুমতি দেয়?
উইলেম

@ উইলেম ইনডেন্টেশনের জন্য চারটি স্থান হ'ল প্রকৃতপক্ষে ট্যাব এবং কেবলমাত্র প্রথমে বর্ণমালা।
ভেক্টরাইজড

2

পিএইচপি 341 324 320

আমি করতে পারে সেরা ছিল।

<?$a="p";$b=fopen($a,'a+');while($c<200){$d=rand(100,999);$e='';for($f=0;$f<3;++$f)$e.=chr(rand(65,90));$g=(rand(1,2)==1)?"$d-$e":"$e-$d";$h=array('ASS','666','69','kkk','SHT');$i=1;foreach($h as $j)!preg_match("/$j/",$g)?:++$i;if($i==1){$k=fread($b,filesize($a));if(!strpos($k,$g)){fwrite($b,$g);echo"$g<br />";++$c;}}}

কোডটি চালাতে কেবল একটি। Php ফাইল হিসাবে সংরক্ষণ করুন এবং এটি কোনও ওয়েব সার্ভারে ব্রাউজ করুন। এটি ইতিমধ্যে বিদ্যমান না থাকলে ব্ল্যাকলিস্ট ফাইল p.txt তৈরি করার চেষ্টা করবে। তবে আপনার যদি রুট অ্যাক্সেস না থাকে তবে আপনাকে এটি একটি সম্পূর্ণ সার্ভার পাথ দিয়ে সংজ্ঞায়িত করতে হবে।

কোড নিজেই এখানে গল্ফীকরণ প্রাক:

<?
// create random plate
// check it does not break rules
// check is not on all time blacklist file
// Add to blacklist file
// Output to screen

// open file handle
$file = "p"; // filename and path if not root access
$fh = fopen($file, 'a+');

// do 200
while($x<200) {

    // get random number
    $rand_number = rand(100,999);

    // get random letters
    $letters = '';
    for($y=0; $y<3; ++$y) $letters .= chr(rand(65,90));


    // mix up combination
    $string = (rand(1,2)==1) ? "$rand_number-$letters" : "$letters-$rand_number";

    // assume is ok
    $ok = 1;

    // Set checks to be excluded on new plates.
    $checks = array('ASS','666','69','kkk','SHT');

    // do the exclusions
    foreach ($checks as $check) !preg_match("/$check/", $string) ? : ++$ok;


    // if all ok, check is not on the blacklist
    if($ok == 1) {

        // read blacklist
        $blacklist = fread($fh, filesize($file));

        // if not on blacklist, add it to file, echo it to output, increment counter
        if (!strpos($blacklist, $string)) {
            fwrite($fh, $string);
            echo "$string<br />";
            ++$x;
        }
    }
}

আমি এটি পেতে পারে হিসাবে সংক্ষিপ্ত ছিল :-(

নমুনা আউটপুট

XWU-888
PUD-534
355-QXG
WDE-402
113-QID
362-YBW
TBK-594
939-XDT
148-ARZ
838-ICY
723-ZDA
.... does exactly 200 new plates.

সম্পাদনা: সংক্ষিপ্ত ফর্মটি ব্যবহার করতে যদি বিবৃতি কয়েকটা আপ করে দেয়।


যদি প্লেটগুলি মিশ্রিত না করতে হয় - অর্থাত্ কেবলমাত্র অক্ষরগুলি হতে পারে তবে আমি এই লাইনটি হারাতে পারি $string = (rand(1,2)==1) ? "$rand_number-$letters" : "$letters-$rand_number";
পল ড্রিউট

1
আপনি একটি একক-অক্ষরের ফাইল নাম ব্যবহার করতে পারেন (উদাহরণস্বরূপ, p.txt এর পরিবর্তে পি) এবং নিজেও 4 টি অক্ষর সংরক্ষণ করতে পারেন।
চিহ্নিত করুন

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

1

ডেলফি, 161 বাইট

এই আমার গ্রহণ এখানে। এটি লাইসেন্স প্লেটগুলিকে লাইন ফিড ছাড়াই স্টাডাউটে আউটপুট করে। যদি এলএফের প্রয়োজন হয় (নিয়মে সুনির্দিষ্ট নয়) এর চেয়ে অতিরিক্ত 4 বাইট যুক্ত হয়।

গল্ফ সংস্করণ:

var S,L:string;begin repeat Str(100+Random(69),S);S:=S+'-';while Length(S)<7do S:=S+Chr(65+Random(10));if Pos(S,L)=0then L:=L+S;until Length(L)>1393;Write(L)end.

Ungolfed:

var
  S, L: string;
begin
  repeat
    Str(100 + Random(69), S); // generate and add first three numbers
    S := S + '-'; // add dash
    while Length(S) < 7 do // generate and add last three letters
      S := S + Chr(65 + Random(10));
    if Pos(S, L) = 0 then // check if its not in the L string and add it
      L := L + S;
  until Length(L) > 1393; // exit loop once L string has more than 1393 chars (199 * 7 = 1393)
  Write(L); // output L to stdout
end.

কীভাবে চালাবেন:

app.exe > plates.txt

1

পিএইচপি, 267

এটি যতটা সংক্ষিপ্ত তা আমি এটি পেতে পারি।

<?php $g=file("p",2)?:[];$b=["ASS","666","KKK","SHT"];for($i=0;$i<200;){$m="A";$n=rand(702,18277);for($j=0;$j<$n;$j++){$m++;}$m.=-rand(100,999);if(!(strpos($m,"69")|in_array($m,$b)|in_array($m,$g))){$g[]=$m;echo"$m\n";$i++;}}file_put_contents("p",implode("\n",$g));?>

প্লেটগুলি "পি" ফাইলে সংরক্ষণ করা হয়।

<?php
$g=file("p",2)?:[]; // Read existing plates
$b=["ASS","666","KKK","SHT"]; // Don't generate these
for($i=0;$i<200;){ // 200 plates
    $m="A"; // Base letter
    $n=rand(702,18277); // 3 random letters
    for($j=0;$j<$n;$j++){$m++;} // Increment until letters are reached (SLOW, but short)
    $m.=-rand(100,999); // Add a dash and three numbers
    if(!(strpos($m,"69")|in_array($m,$b)|in_array($m,$g))){ // Check that it's valid and unused
        $g[]=$m;echo"$m\n";$i++; // Echo it, add it to used array and increment counter
    }
}
file_put_contents("p",implode("\n",$g)); // Save the plates
?>

1

আর, 229 টি অক্ষর

আমি নিশ্চিত এটির উন্নতি হতে পারে:

l=function(x)paste0(sample(x,3,r=T),collapse="")
a=function()c(l(LETTERS),l(0:9))
A=list()
for(i in 1:200)while(any(sapply(c("ASS","666","69","KKK","SHT"),grepl,A[[i]]<-a()))|A[i]%in%A[-i])A[[i]]=a()
lapply(A,paste,collapse="-")

কনসোল চালান, লাইসেন্স প্লেটগুলির একটি তালিকা মুদ্রণ করে।


1

কোবরা - 198

class P
    def main
        l,r=[],Random()
        while l.count<200
            a,b=r.next(1000),''
            for i in 3,b+='[r.next(65,91)to char]'
            if not ('69'in'[a]'or 666==a or b in'ASS KKK SHT'),l+=['[a]-'+b]
        print l

1

ECMAScript 6 - 155 168 158

সতর্কতা : 200 সতর্কতা ডায়ালগ (পরিবর্তন alertকরার জন্য console.logপরীক্ষা করার জন্য)

for(i=0,s={},r=Math.random,l=x=>String.fromCharCode(65+r()*26);i<200;)/ASS|666|69|KKK|SHT/.test(p=(r()+'-'+l()+l()+l()).slice(-7))?0:s[p]=s[p]||(alert(p),i++)

সম্পাদনা : উফ। আসল সংস্করণ মুদ্রিত সদৃশ ...

2 সম্পাদনা করুন : এখন মূল স্কোরের কাছাকাছি - সেট থেকে কোনও সাহসী অ্যারেতে সরে গেছে কিছু ছদ্মবেশী সদৃশ চেকগুলি এটি প্রিন্ট করার অনুমতি দেয়

ফায়ারফক্স কনসোলে পরীক্ষিত।


অভিনন্দন আমার সমাধানের উন্নতি করছে
উইলিয়াম বারবোসা

আমি একটি "সিনট্যাক্স ত্রুটি" পেয়ে করছি করুন: l=x=>String.fromCharCode(65+r()*26);। আমি অনুমান করি আমি কী ঘটছে তা জানি নাl=x=>...
কেভিন ফেগান

@ কেভিনফিগান - আমি অনুমান করছি আপনি ফায়ারফক্স ব্যবহার করছেন না ... f=a=>bএটি একটি ES6 বৈশিষ্ট্য যা মূলত সংক্ষিপ্তকরণের জন্য function f(a) { b }এবং এটি এই মুহূর্তে ফায়ারফক্স দ্বারা সমর্থিত (
অলকোনজা

হ্যাঁ, আমি IE 9 ব্যবহার করছি এবং এটি এখানে কার্যকরভাবে কাজ করে না। আমি এটি ফায়ারফক্সে চেষ্টা করব। ধন্যবাদ।
কেভিন ফেগান

1

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

যথারীতি, ফায়ারফক্স কনসোলে পরীক্ষা করুন এবং পরিবর্তন করুন alert থেকে console.logবা টিপুন প্রস্তুত করা escape200 বার।

R=x=>Math.random()*++x|0
for(l='ABCDEFGHIKJLMNOPQRSTUVWXYZ',i=0,u={};i<200;)
!(/69|666|ASS|SHT|KKK/.test(k=l[R(25)]+l[R(25)]+l[R(25)]+'-'+R(9)+R(9)+R(9))&u[k])&&alert(k,u[k]=++i);

কনসোল সম্পর্কে আমি জানি না, তবে ফায়ারফক্স তাদের নিষ্ক্রিয় করার প্রস্তাব দেওয়ার আগে ওয়েব পৃষ্ঠাগুলি কেবল 5 ফ্রি অ্যালার্টের অনুমতি পেয়েছে
নিল

@ নিল অবশ্যই, তবে অক্ষম করার প্রস্তাব দেওয়া অক্ষম নয়। আপনার কি 200 (বা আরও কোডগল্ফ.স্ট্যাকেক্সেঞ্জিং.com/a/32278/21348 ) পপআপগুলি উপভোগ করা উচিত নয় ?
edc65

1

পাইথন 3, 257 অক্ষর

import string as X,re,random as R
I=[0,1,2]
s={}
while len(s)<200:
 L=R.sample([[R.choice(X.digits) for i in I],[R.choice(X.ascii_uppercase) for i in I]],2);L=''.join(L[0]+['-']+L[1])
 if re.search('ASS|KKK|SHT|69|666',L) or L in s:continue
 print(L);s[L]=0

নমুনা আউটপুট:

# python3 shortened.py
EUN-215
546-SIL
464-ZTR
XIX-794

1
আপনি ;পরিবর্তে 5 এবং 6 লাইন পৃথক করে একটি বাইট সংরক্ষণ করতে পারেন \n
ভূগর্ভস্থমন্ত্র

@ندرগ্রাউন্ডমোনোরাইল, আপনি ঠিক বলেছেন, ধন্যবাদ!
ক্রিশ্চিয়ান সিউপিতু

1

পিএইচপি, 167

while(count($a)<200){$c="";for(;++$y&3;)$c.=chr(rand(65,90));$d=rand(100,999);$c=rand()&1?"$d-$c":"$c-$d";preg_match("/ASS|666|69|KKK|SHT/",$c)||$a[$c]=1;}print_r($a);

এটি বর্তমান পিএইচপি-র সেরাের চেয়ে 100 টি কম :)

while(count($a)<200)
{
    $c="";
    for(;++$y&3;) $c.=chr(rand(65,90));
    $d=rand(100,999);
    $c=rand()&1?"$d-$c":"$c-$d";
    preg_match("/ASS|666|69|KKK|SHT/",$c)||$a[$c]=1;
}
print_r($a);

আশা করি এটা আপনার ভালো লেগেছে. যদি এটি অনুমোদিত হয়:

while(count($a)<200){$c="";for(;++$y&3;)$c.=chr(rand(65,90));$c.=-rand(100,999);preg_match("/ASS|666|69|KKK|SHT/",$c)||$a[$c]=1;}print_r($a);

কেবল ১৪১ টি অক্ষর তবে চর এবং সংখ্যা পরিবর্তন করে না। কোনও পরামর্শ ওয়েলকাম :)


1

এফ #, 264 অক্ষর

গল্ফিংয়ের জন্য ডিজাইন করা কোনও ভাষা আসলেই নয়, তবে আমি নিশ্চিত যে এটির উন্নতি হতে পারে। ল্যাম্বডা সহ সিক.এক্সবাদীদের ব্যবহার করা বেশ বিরক্তিকর, যেমনটি অনেকগুলি পেরেন এবং অন্তর্নিহিত রূপান্তরটির অভাব।

পুনরাবৃত্তি ব্যবহার করে, চিরকাল ধরে চলে।

let g=System.Random()
let c()=char(g.Next(65,90))
let k(i:string)l=Seq.exists(fun e->i.Contains(e))l
let rec p d:unit=
 let l=sprintf"%i-%c%c%c"(g.Next(100,999))(c())(c())(c())
 if k l d||k l ["ASS";"666";"69";"KKK";"SHT"]then p d else
  printfn"%s"l
  p(l::d)
p[]

এফএসআইতে চালানো যায়।


1

পাইথন 203

প্রযুক্তিগতভাবে এটি গণনা করা হয়েছে কিনা তা সম্পর্কে আমি নিশ্চিত নই তবে আমি এটি পছন্দ করেছি তাই আমি এটি যাইহোক পোস্ট করছি। আমি ছদ্ম-এলোমেলোভাবে উত্তরগুলি উত্পন্ন করার সময়, যতই না সবাই প্রত্যেকে তৈরি করেছিল, আমি কৌশলগতভাবে এলোমেলো বীজকে এমনভাবে বেছে নিয়েছিলাম যাতে অবৈধ উত্তরগুলি আউটপুটটিতে শেষ না হয়। সুতরাং, আমার উত্তরটি অবৈধ উত্তরগুলি তৈরি না করেই বৈধ উত্তরের পুরো সেটটি তৈরি করতে সক্ষম নয়।

from random import*;seed(1);L='ABCDEFGHIJKLMNOPQRSTUVWXYZ';D='0123456789';C=choice
for i in 'x'*200:s=randint(0,1);a=''.join(C(L)for _ in'000');b=''.join(C(D)for _ in'000');i=[a,b];print i[s-1]+'-'+i[s]

1

পার্ল - 123 অক্ষর

while(@p<200){$l=(AAA..ZZZ)[int rand 999]."-".(100+int rand 899);@p=grep!/ASS|666|69|KKK|SHT|$l/,@p;push@p,$l}$,=$/;print@p

Ungolfed:

while(@p < 200){ # Repeat until we get 200 plates
    $l = (AAA..ZZZ)[int rand 999]."-".(100+int rand 899); # generate the license plate
    @p = grep !/ASS|666|69|KKK|SHT|$l/, @p; # remove disallowed license ones and duplicates
    push @p, $l # add a license plate
}
$,=$/; # so they print with newlines
print @p # print the plates

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


1

জাভাস্ক্রিপ্ট - 283 327 টি অক্ষর

সম্পাদনা:

অ্যালকোনজার কাছ থেকে দেওয়া পরামর্শগুলি কার্যকর করার পরে , আমার নতুন সংস্করণটি এখানে:

m=Math.random;function y(v){return "ASS|KKK|SHT|666".indexOf(v)<0&&v.indexOf("69")<0?0:!0}function c(){return String.fromCharCode(m()*26+65)}for(i=0;i<200;i++){do {do {n=(m()+"").slice(2,5)}while(y(n));do {l=c()+c()+c()}while(y(l));r=l+"-"+n}while(o.indexOf(r)>=0);o+=r+"\n"}alert(o)
/* 1 line - 283 Characters */

1) চলক: অপসারণ করুন এবং আক্ষরিক ব্যবহার করুন: "\ n" [-4] [323]
2) "ভার ও =" ", আই, আর, এন, এল,"
সরান [-17] [306] 3) সরান চলক: টি এবং ব্যবহার্য আক্ষরিক: "এএসএস | কেকেকে | এসএইচটি | 6 666" [-4] [302]
4) সেট করুন এম = ম্যাথ.রেন্ডম এবং পরিবর্তে "এম" ব্যবহার করুন [-7] [296]
5) ব্যবহার (এম ( ) + "") এম () থেকে টু স্ট্রিং () [-6] [290]
6) অপ্রয়োজনীয় সরান ";" [-7] [283]



পুরানো সংস্করণ: জাভাস্ক্রিপ্ট - 327 অক্ষর

আমি নিশ্চিত যে উন্নতির জন্য কিছু জায়গা আছে ... আমি কোড-গল্ফিংয়ে বেশ অনভিজ্ঞ d

var o="",s="\n",i,r,n,l,t="ASS|KKK|SHT|666";function y(v){return t.indexOf(v)<0&&v.indexOf("69")<0?0:!0;}function c(){return String.fromCharCode(Math.random()*26+65);}for(i=0;i<200;i++){do {do {n=Math.random().toString().slice(2,5);}while(y(n));do {l=c()+c()+c();}while(y(l));r=l+"-"+n;}while(o.indexOf(r)>=0);o+=r+s;}alert(o);    
/* 1 line - 327 Characters */


এখানে "আন-মিনফাইড" ভেরিয়েবল / ফাংশন নাম সহ একটি বিন্যাসিত, "অব্যাহত" সংস্করণ রয়েছে:

var outp="",lsep="\n",ndx,res,nbr,ltr,tbl="ASS|KKK|SHT|666";
function fnvfy(vinp){
  return tbl.indexOf(vinp)<0&&vinp.indexOf("69")<0?0:!0;
}
function fnchr(){
  return String.fromCharCode(Math.random()*26+65);
}
for(ndx=0;ndx<200;ndx++){
  do {
    do {
      nbr=Math.random().toString().slice(2,5);
    }
    while(fnvfy(nbr));
    do {
      ltr=fnchr()+fnchr()+fnchr();
    }
    while(fnvfy(ltr));
    res=ltr+"-"+nbr;
  }
  while(outp.indexOf(res)>=0);
  outp+=res+lsep;
}
alert(outp);



এখানে একটি "ডিবাগ" সংস্করণ যা ব্রাউজারের প্রিয় / বুকমার্কের URL এ আটকানো যেতে পারে। আউটপুটটিকে "সতর্কতা ()" এর পরিবর্তে একটি নতুন "উইন্ডো" তে "TEXTAREA" এ স্থাপন করা হয়েছে:

javascript:(function(){var outp="",lsep="\n",ndx,res,nbr,ltr,tbl="ASS|KKK|SHT|666";function fnvfy(vinp){return tbl.indexOf(vinp)<0&&vinp.indexOf("69")<0?0:!0;}function fnchr(){return String.fromCharCode(Math.random()*26+65);}for(ndx=0;ndx<200;ndx++){do {do {nbr=Math.random().toString().slice(2,5);}while(fnvfy(nbr));do {ltr=fnchr()+fnchr()+fnchr();}while(fnvfy(ltr));res=ltr+"-"+nbr;}while(outp.indexOf(res)>=0);outp+=res+lsep;}var x=window.open();x.document.write('<head>\n</head>\n<body>\n<form name=sa><textarea name=t rows=25 cols=80 wrap>'+outp+'</textarea><br />\n</body>\n');x.document.close();})()
/* */

এখানে "ডিবাগ" সংস্করণটি ফর্ম্যাট করা আছে:

javascript:
(function(){
  var outp="",lsep="\n",ndx,res,nbr,ltr,tbl="ASS|KKK|SHT|666";
  function fnvfy(vinp){
    return tbl.indexOf(vinp)<0&&vinp.indexOf("69")<0?0:!0;
  }
  function fnchr(){
    return String.fromCharCode(Math.random()*26+65);
  }
  for(ndx=0;ndx<200;ndx++){
    do {
      do {
        nbr=Math.random().toString().slice(2,5);
      }
      while(fnvfy(nbr));
      do {
        ltr=fnchr()+fnchr()+fnchr();
      }
      while(fnvfy(ltr));
      res=ltr+"-"+nbr;
    }
    while(outp.indexOf(res)>=0);
    outp+=res+lsep;
  }
  var x=window.open();
  x.document.write('<head>\n</head>\n<body>\n<form name=sa><textarea name=t rows=25 cols=80 wrap>'+outp+'</textarea><br />\n</body>\n');
  x.document.close();
}
)()

2
আপনার আসল অ্যালগরিদমকে স্পর্শ না varকরেই এখানে কয়েকটি জেনেরিক জাভাস্ক্রিপ্ট গল্ফিংয়ের টিপস রয়েছে: জাভাস্ক্রিপ্ট সহজাতভাবে খারাপ সিনট্যাক্স দিয়ে ক্ষমা করছে, সুতরাং আপনাকে আর ব্যবহারের প্রয়োজন হবে না (কেবলমাত্র অ্যাসিটিং দেবে, 323 করবে ), আপনার ;অন্য দরকার নেই যদি না নিম্নলিখিত বিবৃতি না থাকে (উদাহরণস্বরূপ, লাইনের শেষ অক্ষর, বা এর আগে)} , 316 এর ), কেবলমাত্র ইনলাইন (যেমন আপনার sপরিবর্তনশীল, 312 ) এর চেয়ে বেশি কিছু লাগলে যে বিপরীতে ডেটো ব্যবহার করা হয়, তার চেয়ে বেশি কিছু ব্যবহার করা হলে ডায়াল্টের চেয়ে , 316 এর ) দেখুন । একবার (যেমন Math.random(...)থেকে r=Math.random ... r(...), 307 , (x+"")তুলনায় খাটো x.toString(), 300
Alconja

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