সমস্ত দশমিক ডিজিট অনন্য কিনা তা নির্ধারণ করুন


37

স্ট্যাক ওভারফ্লোতে মুছে ফেলা প্রশ্নগুলি কখনও কখনও দুর্দান্ত গল্ফ উপাদানের জন্য তৈরি করে।

একটি ফাংশন লিখুন যা ইনপুট হিসাবে একটি nonnegative পূর্ণসংখ্যার গ্রহণ করে এবং যদি সেই সংখ্যার বেস 10 এর উপস্থাপনের বেস 10 এর সমস্ত অঙ্ক স্বতন্ত্র হয় তবে সত্য ফিরে আসে। উদাহরণ:

48778584 -> false
17308459 -> true

অক্ষর গণনা শুধুমাত্র ফাংশন অন্তর্ভুক্ত।

আপনি যদি সি বা সি ++ তে উত্তর দিতে বেছে নেন: কোনও ম্যাক্রো নেই, কোনও অপরিজ্ঞাত আচরণ নেই; বাস্তবায়ন-সংজ্ঞায়িত আচরণ এবং সংকলক সতর্কতাগুলি ঠিক আছে।


আমি এখনও অন্য সি বা সি ++ সমাধানগুলিতে এই প্রশ্নটি অনুপ্রাণিত করে এমন প্রশ্ন অনুসারে আগ্রহী।
টমাস

1
কোনও সি বা সি ++ ম্যাক্রো বা অপরিজ্ঞাত আচরণ কেন নয়? এটি অদ্ভুতভাবে মাত্র দুটি ভাষায় সীমাবদ্ধ।
ডিফিউয়ার

উত্তর:


31

Golfscript, 8 7 টি অক্ষর:

{`..&=}
  • ` - যুক্তিটি আরও শক্তিশালী করুন
  • .. - দুবার ক্লোন করুন
  • & - নিজেই ছেদ করুন (সদৃশগুলি সরান)
  • = - সমতার জন্য পরীক্ষা করুন।

যদি ফাংশনটির নামকরণের প্রয়োজন হয় (109 টি অক্ষর ):

{`..&=}:a

যদি কোনও প্রোগ্রাম যথেষ্ট হয় (54 টি অক্ষর ):

..&=

5
এর মতো চ্যালেঞ্জ সম্পর্কে কঠোর অংশটি এটিই প্রথম দেখা যাচ্ছে।
প্রাইমো

1
@ প্রিমো এখনও, একরকম, তারা এখনও অর্ধ দিনের মধ্যে +6 স্কোর পাবে।
জন ডিভোরাক

1
@ জনডভোরাক পার্কিনসনের কাজের ক্ষেত্রে তুচ্ছতার আইন
ক্লডিউ

2
@ ক্লডিউ আপনি আইনটি বুঝতে পারবেন। বুঝতে পারেন যে আপনি এটির শিকার হচ্ছেন। তারপরে যাহাই হউক না কেন উত্তরটি উচ্চতর করুন।
ক্রুঙ্কার

1
@ নাথানচিরে আপনার অর্থ কী? পরের দিন সকালে পরামর্শক দ্বারা মোছার আগে লুফোলটি প্রস্তাব দেওয়া হয়েছিল যে শেষ (এবং কেবল) সময়টি এটি -3 এ নেমে আসে। আপনি যদি গল্ফস্ক্রিপ্ট উত্তর পছন্দ না করেন তবে সেগুলিকে উজ্জীবিত করবেন না।
জন ডিভোরাক

24

পাইথন 2 (28) (32)

lambda n:10**len(set(`n`))>n

ব্যাকটিকগুলি স্ট্রিং প্রতিনিধিত্ব করে। একটি সেটে রূপান্তর করা সদৃশগুলি সরিয়ে দেয় এবং আমরা 10 10 d এর সাথে তুলনা করে দৈর্ঘ্য হ্রাস করে কিনা তা যাচাই করি যা সমস্ত ডি-সংখ্যা সংখ্যার চেয়ে বড় তবে কোনও (ডি + 1) -ডিজিট সংখ্যা নয়।

পুরানো কোড:

lambda n:len(set(`n`))==len(`n`)


1
হা আমি এই ছিল সঠিক একই উত্তর প্রস্তুত, শুধু প্রতিস্থাপন nসঙ্গেi
Claudiu

1
@Claudiu আমিও করেনিf=lambda _:len(`_`)==len(set(`_`))
Oberon

হ্যাঁ, এই কামড়ের আকারের চ্যালেঞ্জগুলি সহ, সবাই একই জিনিসটিতে রূপান্তরিত হতে চলেছে। আমিও চেষ্টা করছিলাম lambda n:max(map('n'.count,'n'))<2(একক উদ্ধৃতি ব্যাকটিকস) তবে এটি দুটি অক্ষর দীর্ঘ।
xnor

16

এপিএল (6)

≡∘∪⍨∘⍕

কয়েকবারের মধ্যে একটি যেখানে এপিএলে স্বরূপ শৈলী সংক্ষিপ্ত হয়।

এটির নাম দেওয়ার জন্য এটি 8 টি অক্ষর,

f←≡∘∪⍨∘⍕

তবে এটি ব্যবহার করার প্রয়োজন নেই:

      ≡∘∪⍨∘⍕ 199
0
      ≡∘∪⍨∘⍕ 198
1
      f←≡∘∪⍨∘⍕
      f¨ 198 199 200 201
1 0 0 1
      ≡∘∪⍨∘⍕¨ 198 199 200 201
1 0 0 1

1
আমি মনে করি এটি তৈরি করার জন্য দ্বিতীয় জটটি সরানো যেতে পারে 5.. এটি এখনও নিজেই একটি বৈধ ফাংশন হবে (যদিও এটি সর্বশেষ উদাহরণে প্রতিটি অপারেটরের সাথে এটি ব্যবহারের জন্য গ্রুপিং প্যারেনগুলির প্রয়োজন হবে)।
user46915

11

পার্ল, 19 টি অক্ষর

print<>!~/(\d).*\1/

ধরে নিচ্ছি আউটপুটটিকে সত্য হিসাবে গণ্য করা যায় এবং কোনও আউটপুট মিথ্যা হিসাবে গণ্য করা যায়, আপনার যুক্তিটি বিপরীত is কোনও পুনরাবৃত্তি না থাকলে আপনার সত্য হওয়া উচিত।
জন ডিভোরাক

@ জনডভোরাক ডান প্রায় লাগছে। আমি এটা ঠিক করব।
তাল

না ম্যাচ অপারেটর: <>!~/(\d).*\1/
প্রিমো

@ প্রিয়মো ধন্যবাদ!
তাল

3
ইনপুটটি একটি অ-নেতিবাচক পূর্ণসংখ্যা হিসাবে নির্দিষ্ট করা হয়েছে, সুতরাং আমি আপনাকে এটি যাচাই করতে হবে বলে মনে করি না। আপনি প্রকৃতপক্ষে না থাকে, তাহলে আপনি পরিবর্তন করতে পারেন \dথেকে .
এইচডিভি

9

Rebmμ (10 টি অক্ষর)

e? AtsAuqA

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

সুতরাং এটি এই "unmushes":

e? a: ts a uq a

স্থানটির প্রয়োজন কারণ আপনি একবারে বিকল্পগুলির একাধিক রান শুরু করেছেন, আপনি যদি নতুন রান শুরু না করেন তবে প্রথমটির পরে একটি সেট-শব্দ পেতে আপনি সেই কৌশলটি ব্যবহার করতে পারবেন না। সুতরাং e?AtsAuqAআপনি অর্জিত হয়েছে e? a ts a uq a... কোন নিয়োগ।

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

যে কোনও ক্ষেত্রে, যখন রেবোলকে ম্যাপ করা হয় যা সংক্ষেপে:

equal? a: to-string a unique a

মূল্যায়ন আদেশের সংক্ষিপ্তসার পেতে সহায়তার জন্য কয়েকটি বন্ধনীতে নিক্ষেপ করা:

equal? (a: (to-string a)) (unique a)

সুতরাং উপসর্গ সমতা অপারেটরটি দুটি আর্গুমেন্টে প্রয়োগ করা হয় - প্রথমটি তার aনিজের স্ট্রিং সংস্করণকে অর্পণ করার ফলাফল এবং দ্বিতীয়টি uniqueসেই স্ট্রিংয়ের বিরুদ্ধে চালিত হওয়ার ফলাফল । এটি ঘটে যায় যে অনন্যটি আপনাকে সেই একই ক্রমে উপাদানগুলি ফিরিয়ে দেবে যেভাবে আপনি তাদের পাশ করেছেন ... উদাহরণস্বরূপ "31214" এর থেকে অনন্য "3124" is

এটি দিয়ে চালান:

>> rebmu/args "e? AtsAuqA" 17308459             
== true

কিছু পরিসংখ্যান এবং ডিবাগ তথ্যও রয়েছে:

>> rebmu/args/stats/debug "e? AtsAuqA" 48778584 
Original Rebmu string was: 10 characters.
Rebmu as mushed Rebol block molds to: 10 characters.
Unmushed Rebmu molds to: 15 characters.
Executing: [e? a: ts a uq a]
== false

যদি প্রয়োজনটি হয় যে একজনকে অবশ্যই একটি নামযুক্ত / পুনরায় ব্যবহারযোগ্য ফাংশনটি সংজ্ঞায়িত করতে হবে তবে আপনি একটি "এ-ফাংশন" তৈরি করতে পারেন যা স্পষ্টতই একটি নামের একটি প্যারামিটার নেয় a|। (একটি বি-ফাংশন তৈরি করা হবে b|এবং এর পরে 'এ' নামক একটি প্যারামিটার নেওয়া হবে)। সুতরাং এটি আরও পাঁচটি অক্ষর যুক্ত করবে ... ধরা যাক আপনি "ফ" ফাংশনটি কল করেন

Fa|[e? AtsAugA]

"তুমি হাসো! তারা আইনস্টাইনের দিকে হেসেছিল! নাকি অপেক্ষা কর ... তারা কি করেছে? আমি ... জানি না।"


আমি মনে করি ভাষা মত উচ্চারিত হয় ব্যবহৃত Reb moo, কিন্তু এখন আমি নিশ্চিত যদি এটা হতে অনুমিত এর নই Rebum mewবা Reb mewবা অন্য কিছু।
জাস্টিন

2
Nethack খেলার পর আমি পড়তে Fa|[e? AtsAugA]যেমনFalse? SomeGibberish
জাস্টিন

@ কিউইচুনেক্স কি sআসলেই নেটহ্যাকের ক্ষয় হয় [?
জন ডিভোরাক

@ জনডভোরাক আমি দেখেছি কিছু চিঠি ক্ষয় হতে চলেছে [কিছু সময়ের পরে
জাস্টিন

@ কুইনকুনস সবে লোগো নিয়ে খেলছে। আমি মনে করি REBmuসম্ভবত আরও ভাল। যেভাবেই হোক, দাড়িটি শক্ত ... পিঞ্চগুলি। অনুমান যে আপনি যা প্রদান করেন তা পাবেন।
ডঃ রেব্মু

7

ফ্র্যাক্ট্রান - 53 38 ভগ্নাংশ

47/10 3/5 106/47 3599/54272 53/61 2881/27136 2479/13568 2077/6784 1943/3392 1541/1696 1273/848 1139/424 871/212 737/106 469/53 142/3953 67/71 5/67 1/147 1/363 1/507 1/867 1/1083 1/1587 1/2523 1/2883 1/4107 1/5547 1/7 1/11 1/13 1/17 1/19 1/23 1/29 1/31 1/37 1/43

প্রতিটি সংখ্যার সংখ্যার সংখ্যা গণনা করতে বিভাগ ব্যবহার করে। 2 টি রেজিস্টারে এন রেখে এবং 5 থেকে 1 রেজিস্টার সেট করে কল করুন, 3 নিবন্ধে আউটপুট দেয় (0 টি মিথ্যা হলে, 1 সত্য হলে)। এছাড়াও, নিশ্চিত হয়ে নিন যে আপনার বাকি প্রোগ্রামটি কেবলমাত্র নিবন্ধক> 71 ব্যবহার করে।


সম্পাদনা করুন 25/12/14: এটা 7 মাস হয়েছে এবং আমরা অর্জিত স্ট্যাক বন্ধকৃত যেহেতু করেছি, তাই এখানে (আমার পারে হতে-ভাল অনুবাদক ব্যবহার কোড পরীক্ষা করতে এখানে )।

var ITERS_PER_SEC=1E5;var TIMEOUT_MILLISECS=5E3;var ERROR_INPUT="Invalid input";var ERROR_PARSE="Parse error: ";var ERROR_TIMEOUT="Timeout";var ERROR_INTERRUPT="Interrupted by user";var running,instructions,registers,timeout,start_time,iterations;function clear_output(){document.getElementById("output").value="";document.getElementById("stderr").innerHTML=""};function stop(){running=false;document.getElementById("run").disabled=false;document.getElementById("stop").disabled=true;document.getElementById("clear").disabled=false}function interrupt(){error(ERROR_INTERRUPT)}function error(msg){document.getElementById("stderr").innerHTML=msg;stop()}function factorise(n){var factorisation={};var divisor=2;while(n>1){if(n%divisor==0){var power=0;while(n%divisor==0){n/=divisor;power+=1}if(power!=0)factorisation[divisor]=power}divisor+=1}return factorisation};function fact_accumulate(fact1,fact2){for(var reg in fact2)if(reg in fact1)fact1[reg]+=fact2[reg];else fact1[reg]=fact2[reg];return fact1};function exp_to_fact(expression){expression=expression.trim().split(/\s*\*\s*/);var factorisation={};for(var i=0;i<expression.length;++i){var term=expression[i].trim().split(/\s*\^\s*/);if(term.length>2)throw"error";term[0]=parseInt(term[0]);if(isNaN(term[0]))throw"error";if(term.length==2){term[1]=parseInt(term[1]);if(isNaN(term[1]))throw"error";}if(term[0]<=1)continue;var fact_term=factorise(term[0]);if(term.length==2)for(var reg in fact_term)fact_term[reg]*=term[1];factorisation=fact_accumulate(factorisation,fact_term)}return factorisation}function to_instruction(n,d){instruction=[];divisor=2;while(n>1||d>1){if(n%divisor==0||d%divisor==0){reg_offset=0;while(n%divisor==0){reg_offset+=1;n/=divisor}while(d%divisor==0){reg_offset-=1;d/=divisor}if(reg_offset!=0)instruction.push(Array(divisor,reg_offset))}divisor+=1}return instruction};function run(){clear_output();document.getElementById("run").disabled=true;document.getElementById("stop").disabled=false;document.getElementById("clear").disabled=true;timeout=document.getElementById("timeout").checked;var code=document.getElementById("code").value;var input=document.getElementById("input").value;instructions=[];code=code.trim().split(/[\s,]+/);for(i=0;i<code.length;++i){fraction=code[i];split_fraction=fraction.split("/");if(split_fraction.length!=2){error(ERROR_PARSE+fraction);return}numerator=parseInt(split_fraction[0]);denominator=parseInt(split_fraction[1]);if(isNaN(numerator)||isNaN(denominator)){error(ERROR_PARSE+fraction);return}instructions.push(to_instruction(numerator,denominator))}try{registers=exp_to_fact(input)}catch(err){error(ERROR_INPUT);return}running=true;iterations=0;start_time=Date.now();fractran_iter(1)};function regs_to_string(regs){reg_list=Object.keys(regs);reg_list.sort(function(a,b){return a-b});out_str=[];for(var i=0;i<reg_list.length;++i)if(regs[reg_list[i]]!=0)out_str.push(reg_list[i]+"^"+regs[reg_list[i]]);out_str=out_str.join(" * ");if(out_str=="")out_str="1";return out_str};function fractran_iter(niters){if(!running){stop();return}var iter_start_time=Date.now();for(var i=0;i<niters;++i){program_complete=true;for(var instr_ptr=0;instr_ptr<instructions.length;++instr_ptr){instruction=instructions[instr_ptr];perform_instr=true;for(var j=0;j<instruction.length;++j){var reg=instruction[j][0];var offset=instruction[j][1];if(registers[reg]==undefined)registers[reg]=0;if(offset<0&&registers[reg]<-offset){perform_instr=false;break}}if(perform_instr){for(var j=0;j<instruction.length;++j){var reg=instruction[j][0];var offset=instruction[j][1];registers[reg]+=offset}program_complete=false;break}}if(program_complete){document.getElementById("output").value+=regs_to_string(registers);stop();return}iterations++;if(timeout&&Date.now()-start_time>TIMEOUT_MILLISECS){error(ERROR_TIMEOUT);return}}setTimeout(function(){fractran_iter(ITERS_PER_SEC*(Date.now()-iter_start_time)/1E3)},0)};
<div style="font-size:12px;font-family:Verdana, Geneva, sans-serif;"><div style="float:left; width:50%;">Code:<br><textarea id="code" rows="4" style="overflow:scroll;overflow-x:hidden;width:90%;">47/10 3/5 106/47 3599/54272 53/61 2881/27136 2479/13568 2077/6784 1943/3392 1541/1696 1273/848 1139/424 871/212 737/106 469/53 142/3953 67/71 5/67 1/147 1/363 1/507 1/867 1/1083 1/1587 1/2523 1/2883 1/4107 1/5547 1/7 1/11 1/13 1/17 1/19 1/23 1/29 1/31 1/37 1/43</textarea><br>Input:<br><textarea id="input" rows="2" style="overflow:scroll;overflow-x:hidden;width:90%;">2^142857 * 5</textarea><p>Timeout:<input id="timeout" type="checkbox" checked="true"></input></p></div><div style="float:left; width:50%;">Output:<br><textarea id="output" rows="6" style="overflow:scroll;width:90%;"></textarea><p><input id="run" type="button" value="Run" onclick="run()"></input><input id="stop" type="button" value="Stop" onclick="interrupt()" disabled="true"></input><input id="clear" type="button" value="Clear" onclick="clear_output()"></input>&nbsp;<span id="stderr" style="color:red"></span></p></div></div>

142857অন্য নম্বর দিয়ে প্রতিস্থাপন করুন । 3^1যদি সত্য হয় তবে আউটপুট হওয়া উচিত 1 = 3^0। বৃহত্তর সংখ্যার জন্য কিছুটা সময় নেয় (ভাল, এটি ফ্র্যাক্ট্রান ...)।


6

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

একটি ফাংশন হিসাবে (ECMAScript 6):

f=x=>!/(.).*\1/.test(x)

বা কোনও প্রম্পট থেকে ইনপুট নেওয়া (25 টি অক্ষর)

!/(.).*\1/.test(prompt())

6

সি # 73 60 59

আমার জন্য প্রথম গল্ফিং ...

একটি ফাংশন লিখুন যা ইনপুট হিসাবে একটি nonnegative পূর্ণসংখ্যার লাগে

bool f(int i){return(i+"").Distinct().SequenceEqual(i+"");}

রূপান্তর করে অন্য চরিত্রটি ছিনিয়ে নিতে uintপারে int, তবে আমি বরং অন্য কাজটির চেয়ে টাস্কটি খুব আক্ষরিকভাবে গ্রহণ করি। এখানে আমরা ...


1
কিছু বিকল্প:i => (i + "").Distinct().SequenceEqual(i + "");
এনপিএসএফ 3000

@ এনপিএসএফ 3000 ধন্যবাদ! আমার উত্তর সম্পাদনা। আমার মনে এ জাতীয় কিছু ছিল, তবে ওহ ভাল ... আমি পুরোপুরি ভুলে গেছি +""ডুবির ToString()নীচে ফোন করা।
লক

"Nonnegative পূর্ণসংখ্যার" এর আরও আক্ষরিক ব্যাখ্যা থেকে বোঝা যায় যে একটি স্বাক্ষরিত পূর্ণসংখ্যাটি পাস হবে, তবে এটি কখনও নেতিবাচক হবে না।
শাজ

ঠিক আছে, আমার ধারণা এটি তখন ঠিক হয়ে যাবে ...
Num Lock

সি # 6 ব্যবহার করুন এবং আপনি ব্যবহার করতে পারেন: বুল এফ (ইনট i) => (আই + "") in বিচ্ছিন্ন ()। সিকোয়েন্সএকুয়াল (আই + ""); (53 বাইট)
স্টিফান শিনকেল

5

রুবি (24 বাইট)

"কিছু অক্ষর, তারপরে শূন্য বা আরও বেশি অক্ষর, তারপরে একই অক্ষর" মেলানোর জন্য একটি নিয়মিত অভিব্যক্তি ব্যবহার করুন।

->(s){!!(s !~/(.).*\1/)}

যদি সত্যবাদী বা মিথ্যা মানগুলি আক্ষরিক trueবা পরিবর্তে গ্রহণযোগ্য হয় falseতবে আমরা 20 টি অক্ষর পাই:

->(s){s !~/(.).*\1/}

5

সি (87)

যেহেতু আমি জিততে পারি না, আমি দক্ষতার জন্য যাব।

ফাংশন কোড:

int u(uint32_t d){short s=0,f;while(d){f=1<<d%10;if(s&f)return 0;s|=f;d/=10;}return 1;}

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

5

গণিত, 35 25 টি অক্ষর

(২ the যদি ফাংশনের কোনও নামের প্রয়োজন হয়))

Unequal@@IntegerDigits@#&

সম্পাদনা: 8 টি অক্ষর বেলিসারিয়াসকে ধন্যবাদ!


Unequal @@ IntegerDigits@# &করতে পারি, আমার মনে হয়
ডঃ বেলিসারিয়াস

@ বিলেসারিউস ওহ সুন্দর, আমি এরকম কিছু খুঁজছিলাম কিন্তু এটি খুঁজে পেলাম না (এবং ভাবেন নি যে শৃঙ্খলযুক্ত কোনও সংলগ্ন উপাদানগুলির তুলনা করবে)। ধন্যবাদ, এটি এটিকে অনেক ছোট করে!
মার্টিন ইন্ডার

আপনি এটি একটি নাম দিতে হবে না, তাই না? Unequal@@IntegerDigits@#&25 অক্ষর।
ওফটার 21

@ আকতার সত্য, আমি চ্যালেঞ্জে নামের প্রয়োজন দেখতে পাচ্ছি না। ধন্যবাদ!
মার্টিন এন্ডার

5

আর, 53 51 48 34 বাইট

function(n)!grepl("(.).*\\1",n,,T)

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

একটি স্ট্রিং এবং বিভক্ত রূপান্তর। বিয়োগ 1, গুণফলের একটি সারণীতে রূপান্তর করুন এবং যোগ করুন

অ্যালেক্সের সর্বাধিক সাধারণ সংখ্যার উত্তর দ্বারা অনুপ্রাণিত এবং হাগের পরামর্শ।

একটি দম্পতি সংরক্ষিত হয়েছে, @ গ্রেগ্রার থেকে আরও একটি প্ল্যানাপ্পাসকে ধন্যবাদ এবং একটি দম্পতি এটিকে একটি বেনামি ফাংশন তৈরি করে

এখন @ জে.ডো ধন্যবাদ বিস্ময়কর regex সদর্থকতা সঙ্গে। এটি সংখ্যায় যে কোনও একক চরের সন্ধান করে যা স্ট্রিংয়ের সাথে অন্যত্র মেলে। greplকমান্ডটি কোনো লজিক্যাল যে তারপর ফিরিয়ে দেওয়া হয় ফেরৎ। পার্ল শৈলীর রেজিক্সগুলি সত্যতে সেট করা আছে।


আপনি paste0পরিবর্তে স্ট্রিংতে রূপান্তর করতে পারেন এবং toString2 টি অক্ষর সংরক্ষণ করতে পারেন ।
প্ল্যানাপাস

আপনি আরও একটি চরিত্র সংরক্ষণ করার pasteপরিবর্তে ব্যবহার করতে পারেন paste0
গ্রেগর


@ জে.ডো: আরও ভাল! :)
DigEmAll সমস্ত

একটি ভিন্ন পদ্ধতির ব্যবহার রেগেক্স সহ 35 বাইট
জে.ডো

4

জে (9)

ধরে নেওয়া যায় যে পরীক্ষার মানটি পরিবর্তনশীল হয় b (আমি জানি এটি একটি ফাংশন হিসাবে তৈরি করা যেতে পারে, তবে কীভাবে জে বিভ্রান্ত করছে সে সম্পর্কে কোনও ধারণা নেই this এ সম্পর্কে কোনও সহায়তার প্রশংসা করা হয়েছে) ধন্যবাদ মেরিনাস!

(-:~.)@":

মুছে ফেলা সমস্ত নকলের সাথে সংখ্যার স্ট্রিং রেপটির দৈর্ঘ্য নিয়মিত স্ট্রিং রেপটির দৈর্ঘ্যের সমান কিনা তা পরীক্ষা করে দেখুন।


একটি ফাংশন জন্য আপনি করতে পারেন (-:~.)@":
মেরিনাস

@ মারিনাস ওহ বাহ, এটি আমার ধারণা থেকেও ছোট ছিল। ধন্যবাদ!
ɐɔıʇǝɥʇuʎs

এইচআই, আমি একটি সংক্ষিপ্ত জে সমাধান খুঁজে পেয়েছি এবং পোস্ট করেছি: -: ~। & ""
গ্যালেন ইভানোভ

4

আর ( 70 , 60 , 53 , 52)

আপনাকে দরকারী মন্তব্যের জন্য সবাইকে ধন্যবাদ! আপনার মন্তব্যগুলি উত্তরে অন্তর্ভুক্ত করা হয়েছে।

### Version 70 chars
f=function(x)!any(duplicated(strsplit(as.character(x),split="")[[1]]))

### Version 60 chars
f=function(x)all(table(strsplit(as.character(x),"")[[1]])<2)

### Version 53 chars
f=function(x)all(table(strsplit(paste(x),"")[[1]])<2)

### Version 52 chars
f=function(x)all(table(strsplit(c(x,""),"")[[1]])<2)

f(48778584)
f(17308459)

@ প্ল্যানাপাস, আপনি ঠিক বলেছেন আমি "বেস 10 প্রতিনিধিত্ব" সম্পর্কে বিভ্রান্ত হয়ে পড়েছি।
djhurio

1
টেবিল ব্যবহার করা এবং নকলের পরিবর্তে 0 এর সাথে তুলনা করা কিছু অক্ষর সংরক্ষণ করতে পারে
ডেসন

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

1
এবং যেহেতু আপনি ইতিমধ্যে ফলাফলের প্রথম উপাদানটি গ্রহণ করেছেন strsplitকেন কোনও অক্ষর ব্যবহার করে এক্সকে জোর করে না c(x,"")? f=function(x)all(table(strsplit(c(x,""),"")[[1]])<2)1 টি চরিত্রের সংক্ষিপ্ত :)
প্ল্যানাপাস

3

গণিত (20 19)

(22 21 যদি ফাংশনটির একটি নাম প্রয়োজন হয়)

Max@DigitCount@#<2&

অথবা

Max@DigitCount@#|1&

যেখানে | [এসএসসি] বিভক্ত হওয়ার সাথে সাথে প্রবেশ করা হয়নি


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


2

সি 99, 59 টি অক্ষর

a(x){int r=1,f[10]={};for(;x;x/=10)r&=!f[x%10]++;return r;}

প্রযুক্তিগতভাবে সি 99 এর অন্তর্নিহিত অন্তর্গঠন নেই।
প্যাট্রিকবি

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

2

গ্রোভি (36 টি)

f={s="$it" as List;s==s.unique(!1)}

এটি ব্যবহার করে পরীক্ষিত:

println f(args[0].toInteger())

'মিথ্যা' '1 == 0' বা সম্ভবত আরও কিছু চালাকের মাধ্যমে গল্ফ করা যেতে পারে। ভাল উত্তর
মাইকেল ইস্টার

@ মিশেল ইস্টার 0>1সংক্ষিপ্ত।
#HongKongInd dependence

1
@ অন্যদিকে হ্যাঁ, 1 খুব বেশি কাজ করে ...
মাইকেল ইস্টার

সহায়তার জন্য @ace, মাইকেলএস্টার, THX :-)
এলপি করবে

মাইকেলএস্টার দ্বারা প্রস্তাবিত উইলপ, !1পরিবর্তে ব্যবহার করুন।
#HongKongInd dependence

2

Haskell,:

 import Data.List

 all ((== 1) . length) . group . sort . show

পার্টিতে কিছুটা দেরি হয়ে গেছে, তবে যেহেতু আপনি Data.Listযেভাবেই আমদানি করছেন আমি প্রস্তাব করব nub, যা একটি তালিকা থেকে নকলকে সরিয়ে দেয়। (\x->nub x==x).show
ফ্লোন্ক

আপনি pl ব্যবহার করেন নি ...main = interact $ show . ap (==) nub . show
কাজজিস্টার

2

জে (8)

আমার পূর্ববর্তী উত্তর থেকে প্রতিযোগিতামূলকভাবে sepertae।

*/@~:@":

2

আর, 66 65 টি অক্ষর

f=function(x)!sum(duplicated((x%%10^(i<-1:nchar(x)))%/%10^(i-1)))

পূর্ণসংখ্যা বিভাগ এবং মডুলো ব্যবহার করে অঙ্কগুলি পৃথক করুন, তারপরে সেগুলি সদৃশ কিনা তা পরীক্ষা করুন।

ব্যবহার:

> f(48778584)
[1] FALSE
> f(17308459)
[1] TRUE

বা, যেমন @ মিকিটি পরামর্শ দিয়েছে, characters৩ টি চরিত্রের জন্য:

f=function(x)!anyDuplicated((x%%10^(i<-1:nchar(x)))%/%10^(i-1))

1
আপনি ব্যবহার করতে পারে anyDuplicatedবদলে sumএবং duplicated2 আরো অনেক কিছুর জন্য
MickyT

2

সি, 58 বাইট

f;a(x){for(f=0;x;x/=10)f+=1<<x%10*3;return!(f&920350134);}

গড়িয়ে যাওয়ার আগে 7 টি অভিন্ন অঙ্কের ট্যালি রাখতে পারে।

পরীক্ষামূলক প্রোগ্রামে (এটি অক্টালের ধ্রুবকগুলির সাথে কীভাবে কাজ করে তা দেখতে আরও সহজ)

a(x){int f=0;for(;x;x/=10)f+=1<<x%10*3;return!(f&06666666666);}

main(){
scanf("%d",&r);
printf("%o\n",a(r));}

আপনার যদি 2 হাতের বিশাল শক্তি থাকে তবে ধ্রুবকের মতো গণনা করা যায় f&(1<<30)/7*6


আমি মনে করি @xfix এর মন্তব্যটি আপনার পরিবর্তে আমার পোস্টের জন্য? আপনি int main(int)নিজের জবাবটি আসলে ব্যবহার করেন নি ...
#HongKongInd dependence

বাহ্যিক তথ্য যা কোড বাইট / চরের গণনার সাথে গণনা করে না তা অবশ্যই অনুমোদিত নয়। আমি আপনাকে প্রথম সংস্করণটি সরানোর পরামর্শ দিচ্ছি (53 বাইট)।
2501

সম্পাদনা সারাংশ আমার মন্তব্য দেখুন ।
2501

আমি সম্পাদনাটি প্রত্যাখ্যান করার পক্ষে ভোট দিয়েছি, তবে আমি সম্মত হই যে গণনাগুলি ভুল দেখাচ্ছে look আমি তাদের 67 এবং 63 (61) করি।
পিটার টেলর

আমার সম্পাদনাটি অন্য ব্যবহারকারীরা প্রত্যাখ্যান করেছিলেন। দয়া করে এটি পুনরায় মূল্যায়ন করুন।
2501


1

জাভাস্ক্রিপ্ট 73 টি অক্ষর

function f(n){return !~(n+'').split('').sort().join('').search(/(\d)\1/)}

1

বেফঞ্জ 98, 17 বাইট

এটি একটি প্রতিদ্বন্দ্বিতামূলক উত্তর কারণ বেফুংয়ের কার্যকারিতা নেই।

~:1g1`j@1\1p3j@.1

1সংখ্যার অঙ্কগুলি সমস্ত অনন্য হলে প্রিন্ট করুন ; অন্যথায়, এটি কেবল শেষ হয়।

এটি Funge স্পেসে এমন একটি ঘরে অ্যাক্সেস করে কাজ করে যার xসমন্বয়টি অক্ষরের ইনপুট করা অক্ষরের ASCII মান হয় (অক্ষর অনুসারে ইনপুট অক্ষর গ্রহণ করে) এবং যার yস্থানাঙ্ক হয় 1। অঙ্কটি যদি আগে না দেখা যায় তবে ঘরের মান 32(স্থানের অক্ষর)। যদি তা হয় তবে আমি মানটিকে 1 তে সেট করে দিই।

বোনাস হিসাবে, এটি অ-সংখ্যাগুলির জন্যও কাজ করে।



1

পার্ল 6 (19 বাইট)

{.comb.uniq==.comb}

.combএকটি স্ট্রিংকে অক্ষরে বিভক্ত করে (উদাহরণস্বরূপ, 42.combদেয় "4", "2")। .uniqসমস্ত অ-অনন্য অক্ষর সরিয়ে দেয়। .combস্ট্রিং অক্ষর (মূলত আমি ব্যবহার .chars, কিন্তু .combখাটো)। ==তালিকাগুলিকে এতে উপাদানগুলির সংখ্যায় রূপান্তর করে এবং সংখ্যার তুলনা করে। কখন .অবজেক্ট ছাড়াই ব্যবহৃত হয়, $_যা ডিফল্ট ফাংশন প্যারামিটার ধরে নেওয়া হয়। {}ফাংশন আক্ষরিক হয়।


1

সি, 76

এটি বিজয়ী হওয়ার কাছাকাছি নয়, তবে বিকল্প বিকল্প দেখানোর জন্য আমি এটি পোস্ট করব।

c;i;a[99];main(){while(~(c=getchar()))a[c]++;for(;i<99;)a[i++]>1&&puts("");}

মিথ্যা হলে একটি নতুন লাইন প্রিন্ট করে, সত্য হলে কিছুই প্রিন্ট করে না।


এই প্রোগ্রামটির একটি অনির্ধারিত আচরণ রয়েছে। প্রধান জন্য সঠিক স্বাক্ষর int main(int, char **)বা হয় int main(void)int main(int)বৈধ নয়.
কনরাড বোরোস্কি

@xfix আমি ধরে নিলাম main()ঠিক আছে তো?
#HongKongInd dependence

হ্যাঁ, ঠিক আছে। এর অর্থ একই জিনিস main(void)(যখন সংজ্ঞায় ব্যবহৃত হয়, ঘোষণায় এটি অজানা প্যারামিটার তালিকার একটি ফাংশন ঘোষণা করে)।
কনরাড বোরোস্কি

1

পসিক্স এস এবং এগ্রিপ ( 47 , 43 , 40)

f()([ ! `echo $1|egrep '([0-9]).*\1'` ])
  • [-1 গৃহস্থালির কাজ]: ব্যবহার করুন !পরিবর্তে -zসঙ্গে test- ধন্যবাদ DigitalTrauma
  • [-1 চর]:`CODE` পরিবর্তে ব্যবহার করুন $(CODE)- ধন্যবাদ ডিজিটালট্রামা
  • [-2 অক্ষর]: 1 এরfold -1 পরিবর্তে ব্যবহার করুন - ধন্যবাদ ডিজিটালট্রামা।grep -o .
  • [-3 অক্ষর]: ব্যাক রেফারেন্সযুক্ত নিয়মিত প্রকাশের সাথে পুনরাবৃত্ত সংখ্যাগুলির জন্য পরীক্ষা করুন।

POSIX সম্মতি গুরুত্বপূর্ণ echo PARAM |না হলে প্রতিস্থাপন করা যেতে পারে <<<PARAM, ফাংশন দৈর্ঘ্য 37 হ্রাস :

f()([ ! `egrep '([0-9]).*\1'<<<$1` ])

ব্যবহার:

$ if f 48778584; then echo true; else echo false; fi
false
$ if f 17308459; then echo true; else echo false; fi
true

1 এর fold -Nকয়েকটি সংস্করণে স্বরলিপিটি হ্রাস করা হয়েছে fold


f()(! [ `fold -1<<<$1|sort|uniq -d` ])আমার গণনা অনুসারে 38-
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা: ভাগ করে নেওয়ার জন্য ভাল জিনিস ধন্যবাদ। আমি দেখতে পেয়েছি যে পরীক্ষিত কমান্ডটি উদ্ধৃত করা আবশ্যক, অন্যথায় একাধিক লাইন প্রত্যাবর্তনের testসময় এটিতে ক্রোকস uniq -d। সুতরাং সংক্ষিপ্ততম-নন-পসিক্স সংস্করণ 40 টি অক্ষর। আমি [ !স্বরলিপি সম্পর্কে জানি , কিন্তু আমি অবাক হয়েছি যে ! [এটিও কাজ করে, আপনি কি জানেন যে এটি কেন?
থর

আহ আমি বাশ ব্যবহার করছিলাম। সুতরাং আমি অনুমান করি যে আপনি যদি পসিক্স কনফরমেন্সটি চান তবে এটি আর দীর্ঘ নয়।
ডিজিটাল ট্রমা

1

জাভা ( 131 59 57)

57 টি অক্ষর:

@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ এর পরামর্শ অনুসারে ^ এবং $ সরানো হয়েছে

boolean u(int n){return !(n+"").matches(".*(.).*\\1.*");}

59 টি অক্ষর (নেতিবাচক সংখ্যার সাথেও কাজ করে!):

boolean u(int n){return !(n+"").matches("^.*(.).*\\1.*$");}

79 78 অক্ষর (ধন্যবাদ @ n̴̖̋h̷͉a̷̭̿h̸̡̅ẗ̵̨d̷̰ĥ̷̳):

কয়েকটি পালক সংরক্ষণ করতে লুপের জন্য ব্যবহার করুন এবং বুলিয়ান অ্যারে হিসাবে ইন্ট ব্যবহার করুন।

1 টি অক্ষর সংরক্ষণ করতে && এর পরিবর্তে & ব্যবহার করুন (এটি দেখা যাচ্ছে যে জাভা এটির অনুমতি দেয়)।

boolean u(int n){for(int x=0;n>0&(x>>n%10&1)==0;n/=10)x|=1<<n%10;return n==0;}

১৩১ টি অক্ষর (negativeণাত্মক সংখ্যার জন্য সত্য প্রত্যাশা করে):

boolean u(int n){int[] p=new int[]{2,3,5,7,11,13,17,19,32,29};double a=9001312320D;while(n>0){a/=p[n%10];n/=10;}return (long)a==a;}

মন্তব্য সহ:

boolean unique(int n){
    int[] p=new int[]{2,3,5,7,11,13,17,19,32,29};//list of 10 first primes
    double a=9001312320D;//10 first primes multiplied
    while(n>0){
        a/=p[n%10];//divide by (n%10+1)th prime
        n/=10;//divide n by 10, next digit
    }
    return (long)a==a;//if a is integer then n has all digits unique
}

এবং উত্তরটি প্রযুক্তিগতভাবে সঠিক (চরিত্রের গণনায় কেবল ফাংশন অন্তর্ভুক্ত থাকে, বৈশ্বিক ভেরিয়েবলগুলি নয়) তবে আমি মনে করি এটি প্রতারণা করছে, 29 টি অক্ষর:

boolean u(int i){return m[i];}

মি [] হ'ল বুলিয়ান অ্যারে যাতে সমস্ত 32-বিট পূর্ণসংখ্যার জন্য সঠিক উত্তর রয়েছে।


"^.*(.).*\\1.*$"আপনি ড্রপ করতে পারেন ^এবং $। এগুলি দ্বারা নিহিতmatches()
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

২ য় পদ্ধতিটি বুলিয়ান অ্যারে হিসাবে কোনও ইনট 10 বিট ব্যবহার করে করা যেতে পারে, যা প্রধান টেবিলের প্রয়োজনীয়তা দূর করবে।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

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