আপনাকে একটি স্ট্রিং দেওয়া হবে। এটিতে 0-9 থেকে 9 টি অনন্য পূর্ণসংখ্যা থাকবে। আপনাকে অবশ্যই অনুপস্থিত পূর্ণসংখ্যাকে ফেরত পাঠাতে হবে। স্ট্রিংটি এর মতো দেখাবে:
123456789
> 0
134567890
> 2
867953120
> 4
আপনাকে একটি স্ট্রিং দেওয়া হবে। এটিতে 0-9 থেকে 9 টি অনন্য পূর্ণসংখ্যা থাকবে। আপনাকে অবশ্যই অনুপস্থিত পূর্ণসংখ্যাকে ফেরত পাঠাতে হবে। স্ট্রিংটি এর মতো দেখাবে:
123456789
> 0
134567890
> 2
867953120
> 4
উত্তর:
@ সৌজ্য বোর্সকে ধন্যবাদ জানাই
`99066**2`.strip
99066**2
0 ~ 9 রয়েছে এমন স্ট্রিং উত্পন্ন করার জন্য কেবল একটি ছোট্ট উপায়
764**4
দুটি বাইট সংরক্ষণ করতে পারে।
764**4
নিখোঁজ রয়েছে 5
, 8
এবং9
763**4
=338920744561
lambda s:-int(s,16)%15
একটি গাণিতিক সমাধান। ইনপুট স্ট্রিংটিকে হেক্স হিসাবে ব্যাখ্যা করে, এটিকে উপেক্ষা করে এবং ফলাফলটি মডুলো 15 এ নিয়ে যায়।
⎕D∘~
⎕D
ডি আইজিটস
∘
(মোনাডিক ফাংশন তৈরি করতে নিম্নলিখিত ডায়াডিক ফাংশনের সাথে একটি বাম যুক্তি যুক্ত করে)
~
[যুক্তি] বাদে
⎕D~⊢
⎕D
ডি আইজিটস
~
ছাড়া
⊢
সঠিক যুক্তি
⎕D~⍞
⎕D
ডি আইজিটস
~
ছাড়া
⍞
অক্ষর ইনপুট
ডিজেএমসিমেহেমে 10 টি বাইট সংরক্ষণ করা হয়েছে!
((([]())[]{}){()()({}[()])}{}[{{}}])
আসকিতে সমস্ত সংখ্যার যোগফল 525 This এই প্রোগ্রামটি ইনপুটটির যোগফল দেয় এবং অনুপস্থিত অঙ্কটি পেতে 525 থেকে বিয়োগ করে।
((([]())[]{}){()()({}[()])}{} )
525 ধাক্কা দেবে This এটি সত্যতার সুবিধা গ্রহণ করে যে আমরা জানি যে শুরু করার জন্য ইনপুটটির 9 টি উপাদান থাকবে। এর অর্থ হল []
9 এর মূল্যায়ন যা আমাদের 525 এর মতো দ্রুত সংখ্যায় পেতে দেয়।
পরবর্তী আমাদের বিট আছে:
[{{}}]
যা ইনপুটগুলি যোগ করবে এবং এটি মোট থেকে বিয়োগ করবে।
negative(sum(input()))
শেষের দিকে চলে যান তবে 525 টি সহজ করে ধাক্কা দেওয়ার জন্য আপনি স্ট্যাক-উচ্চতার নীলাদকে অপব্যবহার করতে পারেন। (([][][]()()()){()()({}[()])}{}[{{}}])
আপনাকে 10 বাইট সংরক্ষণ করতে হবে
(477-).sum.map fromEnum
এটি অনলাইন চেষ্টা করুন! ব্যবহার: (477-).sum.map fromEnum $ "123456890"
। 477 হ'ল 0 থেকে 1 বাদে অঙ্কের অক্ষর কোডগুলির যোগফল This এই বেনাম ফাংশনটি 477 বিয়োগকে সমস্ত অঙ্কের অক্ষর কোডগুলির যোগফলকে গণনা করে missing
চর অঙ্কগুলি ints এ পরিণত করা আরও একটি বাইট দীর্ঘ:
(45-).sum.map(read.pure)
foldl(\a b->a-read[b])45
ḟ
।
Ø
= ⎕
, D
= D
, ḟ
= ~
, হিসাবে ⎕D~'867953120'
।
48 * 9 + 45 থেকে আসকি কোডগুলি যোগ করে এবং বিয়োগ করে
->s{477-s.sum}
এই মত ব্যবহার করুন
f=->s{477-s.sum}
puts f["123456789"]
আরও বুদ্ধিমান কৌতুক সহ 1 বাইট সংরক্ষণ করুন thx @ নীল, সম্পাদনা করুন
1 থেকে 9 পর্যন্ত সমস্ত মানকে জোর করে দেওয়া হয় 1. আরও 1 বার জোড় 1 এবং ফলাফলটি 0 হয় So সুতরাং, যদি কোনও একক মান অনুপস্থিত থাকে তবে ফলাফলটি অনুপস্থিত মান হবে।
s=>eval([1,...s].join`^`)
পরীক্ষা
f=s=>eval([1,...s].join`^`)
function go() {
var i=I.value;
O.textContent = f(i)
}
go()
<input oninput='go()' value='012987653' id=I>
<pre id=O></pre>
s=>eval([1,...s].join`^`)
একটি বাইট সংরক্ষণ করে।
-6 বেসিক সানসেটকে ধন্যবাদ
-2 মার্টিন ইন্ডারকে ধন্যবাদ
.
$*_5$*
+`_1|1_
1
অনেকগুলি _
এবং 5 1
গুলি প্রতিটি অঙ্ক প্রতিস্থাপন করুন :
.
$*_5$*
প্রত্যেকটির জন্য সমস্ত _
গুলি এবং একটি সরান 1
:
+`_1|1_
1
বামের সংখ্যা গণনা করুন :
1
.
।
^
5
^.
$*9¶
.
$*_
+`_¶_
¶
_
_
করার 1
জন্য সরে গিয়েছিলেন ))
s=>(15-`0x${s}`%15)%15
@ Xnor এর পাইথনের উত্তর বন্দর, জাভা স্ক্রিপ্টে কেবলমাত্র একটি মডুলো অপারেটরের পরিবর্তে একটি অবশিষ্ট অপারেটর রয়েছে, সুতরাং আমি এটি একটি পদক্ষেপেও করতে পারি না। সম্পাদনা করুন: @ আরনাউল্ডকে 6 বাইট সংরক্ষণ করা হয়েছে
s=>[...s].map(c=>r-=c,r=45)|r
;-)
reduce
। যাইহোক +1
s[0]!='0'
, তবে ইতিমধ্যে একটি উত্তর রয়েছে যা ব্যবহার করে eval
।
s=>(15-`0x${s}`%15)%15
?
-[-[->-<],]>++.
এখানে চেষ্টা করে দেখুন । এই সমাধানটি কেবল স্ট্যান্ডার্ড ব্রেনফাক (8-বিট কোষ) নিয়ে কাজ করে, কারণ এটি মোড়কের উপরে নির্ভর করে।
এটি একটি বিরল দিন যখন ব্রেইনফাক আসলে প্রতিযোগিতা করতে পারে, তবে এই চ্যালেঞ্জটি খুব ভালভাবে বিএফের সাথে মিল রেখে ঘটেছে!
এই উত্তরটি সরাসরি ভাঙার পরিবর্তে, আমি যে পুনরাবৃত্তি নিয়েছি তা নিয়ে পদক্ষেপ নিতে চাই, কারণ আমার ধারণা এটি আরও বোধগম্য হবে (এবং আরও আকর্ষণীয়)।
দ্রষ্টব্য: এই সমাধানটি বেশিরভাগ ক্ষেত্রে গম উইজার্ডের ব্রেন-ফ্লাক উত্তর দ্বারা অনুপ্রাণিত হয় ।
তার উত্তরে গমের উইজার্ড উল্লেখ করেছিলেন যে, 0-9 সমষ্টি থেকে 525. প্রয়োজন এবং মান Brainfuck যেহেতু ASCII মান এর সমষ্টি শুধুমাত্র [0.255] এর একজন ধারণা আছে, এই মান 525% 256 = তোলে 13 । এর অর্থ, 13 নেট থেকে আপনাকে হারিয়ে যাওয়া অঙ্কটি থেকে ইনপুটটির ASCII মানগুলি বিয়োগ করা।
এই প্রোগ্রামের প্রথম সংস্করণটি ছিল:
1. প্রথম কক্ষে ১৩ টি রাখুন
২ দ্বিতীয় কক্ষে ইনপুট নিন
৩. প্রথম ঘরটি থেকে দ্বিতীয় সেলটি বিয়োগ করুন in.
যদি ইনপুট বাকী থাকে তবে ২ তে যান
5 প্রথম কক্ষটি মুদ্রণ করুন
এবং সহজ সমাধানের জন্য এখানে কোড:
+++++++++++++ #Set the first cell to 13
>, #Take inputs into the second cell
[[<->-],] #Subtract the second cell from the first cell and repeat until inputs are over
<. #Print the first cell
তার উত্তরে যেমন উল্লেখ করা হয়েছে, যেহেতু আমরা জানি যে ইনপুটটি ঠিক 9 দৈর্ঘ্যের হবে, আমরা সেই মানটিকে একটি ধ্রুবক হিসাবে ব্যবহার করতে পারি এবং + এর দীর্ঘতর স্ট্রিংটি শুরুতে বজায় রাখতে পারি।
আমরা কী বিন্দুতে ১৩ টি যুক্ত করব তা ধন্যবাদ জানায় না (ধন্যবাদ, পরিবহণমূলক সম্পত্তি!), সুতরাং আমরা এটি বিয়োগ এবং মুদ্রণের পদক্ষেপের সাথে মিশ্রিত করব।
, #Take input to enter the loop
[[->-<], #Subtract the first cell from the second cell
>+<] #Add 1 for each input; totaling 9
>++++ #Add the missing 4 to make 13
. #And print
এটি এই সমস্যার আমার মূল উত্তর ছিল, তবে আমরা আরও ভাল করতে পারি।
আকর্ষণীয়ভাবে যথেষ্ট, পূর্বের উত্তরগুলি কার্যকর হয় এমনকি আমরা যদি একটি + এর পরিবর্তে + দিয়ে শুরু করি,
+[[->-<],>+<]>++++.
লুপ শুরু করার জন্য ব্রেইনফাকের একটি ঘরে কিছু প্রয়োজন । আমরা নির্লজ্জভাবে শেষ পর্যন্ত অতিরিক্ত 4 যুক্ত করেছি, যখন এটি অন্য জায়গায় যেতে পারত।
-[[->-<],>+<]>++.
কিছু সম্পূর্ণ উদ্দেশ্যমূলক (পড়ুন: পরীক্ষা এবং ত্রুটি) লুপ কৌশলের সাথে, প্রোগ্রামটি একটি দিয়ে শুরু করে - দুটি আকর্ষণীয় ফলাফলের দিকে নিয়ে যায়:
1 + 10 + 2 = 13, এবং আমরা মূল উত্তরটি দিয়ে শেষ করব।
এটি ফিরে তাকানো, এটি সম্ভবত একটি সাধারণ ব্রেইনফাক প্রোগ্রামের জন্য এটি একটি অতিরিক্ত লেখার আপ।
এই সমাধানটি আরও কিছুটা চিন্তা করার পরে আমি 2 বাইট কেটে ফেলতে সক্ষম হয়েছি।
আমি পূর্ববর্তী পদক্ষেপ সম্পর্কে কিছু স্পষ্ট করতে চেয়েছিলাম:
লুপটিতে কার্যকরভাবে বিয়োগফলটি 1 যোগ করে, তবে এটি আসলে যা করছে তা দ্বিতীয় ঘর থেকে 255 বিয়োগ করছে (যার ফলে 1)।
এটি পূর্ববর্তী ক্ষেত্রে স্পষ্ট, তবে প্রথম কক্ষ থেকে 1 টি বিয়োগ করা দ্বিতীয় কোষে 1 যুক্ত করার সমান (কারণ প্রথম কোষের প্রতিটি জিনিসই দ্বিতীয় কোষ থেকে বিয়োগ হয়ে যায়))
-[-[->-<],]>++.
আমি প্রথম লুপের শুরুতে "-" যোগ করে "> + <" মুছে ফেলতে সক্ষম হয়েছি। এটি সেখানে যেতে হবে, যেখানে "> + <" ছিল না, কারণ প্রোগ্রামটি অন্যথায় অসীমভাবে লুপ করবে।
477-Tr@ToCharacterCode@#&
খাঁটি ফাংশন ইনপুট হিসাবে একটি স্ট্রিং গ্রহণ এবং একটি পূর্ণসংখ্যা ফিরে। ম্যাথামেটিকার দীর্ঘ কমান্ডের নাম রয়েছে এবং স্ট্রিং এবং পূর্ণসংখ্যার মধ্যে রূপান্তর করতে নারাজ, যা এই চ্যালেঞ্জটিতে এটি বিশেষত খারাপ করে তোলে। লেভেল রিভার সেন্টের রুবি উত্তর থেকে পাওয়া সেরা অ্যালগরিদমটি আমি খুঁজে পেতে পারি , যা ইনপুট স্ট্রিংয়ের মোট এএসসিআইআই কোডের ভিত্তিতে একটি গণনা করে; গাণিতিকায় এটি কেবলমাত্র একটি দীর্ঘ কমান্ডের নাম ব্যবহার করে।
<?=trim(32043**2,$argv[1]);
সমস্ত অঙ্কযুক্ত স্ট্রিং তৈরি করতে রডের উত্তর থেকে কৌশলটি ব্যবহার করে তারপরে অনুপস্থিত একটি ব্যতীত সমস্ত অঙ্ক সরিয়ে দেয়।
পিএইচপি, 41
for($b=1;$i<9;$b^=$argv[1][$i++]);echo$b;
এটি একজন জোর ব্যবহার করে কারণ আমি এটি এখনও দেখিনি।
32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
আমি একটি ছোট বাশ সমাধান পেয়েছি , এটি একটি আকর্ষণীয় চেকসাম পদ্ধতির ব্যবহার করে:
sum -s|dc -e524?--P
ব্যাখ্যা:
sum
কমান্ড একটি চেকসাম এবং একটি ব্লক গণনা ছাপে। আমি অনেক বিশদ জানি না, তবে বিকল্পটি -s
(সিস্টেম ভি ভি অ্যালগরিদম) ব্যবহার করে প্রতিটি ইনপুট অক্ষর কোডের ASCII যোগফলের সমান চেকসাম তৈরি করবে। যেমন, একই ইনপুট অক্ষরের ক্রম পরিবর্তিত হলে চেকসাম স্থির থাকে।
867953120
পরীক্ষার কেস হিসাবে দেওয়া (শেষ উদাহরণ), এখানে স্ক্রিপ্টটি কীভাবে কাজ করে:
sum -s
আউটপুট 473 1
। কোনও পূর্ণসংখ্যার অনুপস্থিত থাকলে, চেকসামটি 525 হত।dc -e524?
524 এবং তারপরে পাইপের ইনপুটটি পুশ করে। স্ট্যাকের হল: 1 473 524
। ধারণাটি হ'ল 525 থেকে চেকসামটি বিয়োগ করা হবে, তবে যেহেতু যোগফল 1 আউটপুটগুলিও রয়েছে, তাই আমার এটির সাথে কাজ করা প্রয়োজন।--P
। দুই subtractions (524- (473-1)) প্রয়োগের পর স্ট্যাকের হল: 52
। 'পি' দিয়ে আমি সেই ASCII কোড সহ অক্ষরটি মুদ্রণ করি:, 4
অনুপস্থিত অঙ্ক।function m(s)
character(len=10)::s,t
t='0123456789'
do j=1,10
k=0
do i=1,9
if(s(i:i)==t(j:j))k=1
end do
if(k==0)m=j-1
end do
end
খুব সংক্ষিপ্ত নয়, আমি ভয় পাচ্ছি।
Ungolfed:
integer function m(s)
implicit none
character(len=9)::s
character(len=10)::t
integer:: i, j, k
t='0123456789'
do j=1,10
k=0
do i=1,9
if (s(i:i) == t(j:j)) k=1
end do
if (k==0) m=j-1
end do
end function m
A,sq-
A, e# The range from 0 to 9: [0 1 2 3 4 5 6 7 8 9]
s e# Cast to a string: "0123456789"
q e# The input
- e# Remove all characters from the range that are in the input
e# Implicit output
এর জন্য +1 অন্তর্ভুক্ত -r
s/$/0123456789/
:
s/(.)(.*)\1/\2/
t
s/$/0123456789/ # Append 0123456789
: # Start loop
s/(.)(.*)\1/\2/ # remove a duplicate character
t # loop if something changed
ẹ:Ị↔x
তর্কযুক্তভাবে সংক্ষিপ্ত হওয়া উচিত (কেন এখনও ẹ
প্রয়োজনীয় তা নিয়ে আমি এখনও বিভ্রান্ত ), তবে এটি আমার পক্ষে সেরা।
ẹ:Ị↔x
ẹ Split the input into a list of characters
:Ị Pair that list with the string "0123456789"
↔x Remove all elements of the list from the string
x
বাস্তবায়ন পুরানো এবং সুন্দর বগি, এজন্য আপনার প্রয়োজন ẹ
।
¬∋ℕ
কেবল 3 টি চরিত্রে কাজ করা উচিত - যা আমি প্রথমে চেষ্টা করেছি - তবে এর একাধিক কারণ রয়েছে এবং এটি আমার মনে হয় না ব্র্যাচল্যাগ পরিবর্তন করার কোনও যুক্তিযুক্ত উপায় আছে যাতে এটি ঘটে।
¬∋ℕ
মতো কাজ করা এমনকি সম্ভব নয়, যদি না আপনি যা বোঝায় তার নির্দিষ্ট করে প্রোগ্রামিং না করে not in
। ¬
ব্র্যাচ্লাগে প্রোলোগের সমান \+
, এবং এর অর্থ হ'ল "ক্লোজড-ওয়ার্ল্ড অনুমানের অধীনে প্রমাণযোগ্য নয়", "" যা যা যা যা যা যা যা যা যা যা যা যা যা যা যা যা যা যা যা যা "যাচাই করে না তার জন্য আমাকে পছন্দ পয়েন্ট দেয়", যা প্রায় সবসময়ই সীমাহীন সংখ্যক জিনিস )
(lambda(s)(- 45(reduce'+ s :key'digit-char-p)))
Ungolfed:
(lambda (s) (- 45 (reduce '+ s :key 'digit-char-p)))
Explaination:
(reduce '+ s :key 'digit-char-p)
এটি চরগুলিতে প্রবেশ করে s
, অঙ্কগুলিতে রূপান্তর করে এবং এগুলি যুক্ত করে। অঙ্ক-চর-পি, সুবিধামত, চরের সংখ্যাটিকে তার "সত্য" মান হিসাবে ফিরিয়ে দিন, যাতে এটি পরীক্ষা বা রূপান্তর হিসাবে ব্যবহার করা যায়।
(- 45 ...)
45 থেকে বিয়োগটি অঙ্কটি দেয় যা ইনপুট থেকে অনুপস্থিত ছিল back
5v&;52/ni?@.>!&oW+
সম্প্রসারিত
5 v
& ;
5 2 / n i ? @ .
> ! & o W + . .
. .
. .
এই মস্তিষ্কের ফ্ল্যাঙ্ক উত্তর হিসাবে একই ধরণের পদ্ধতি ব্যবহার করে ।
স্ট্যাকের উপর 5, 2 টি চাপুন, কনটেনেটেট করুন, 5 চাপুন, কনটেনেট এবং অবহেলা করুন-
তারপরে পুনরাবৃত্তিভাবে ইনপুট পান এবং ইনপুটটির শেষ না হওয়া পর্যন্ত যুক্ত করুন।
শেষ ইনপুট সরান, নেগেট (ইতিবাচক করুন) শেষ যোগ ফলাফল, অক্ষর আউটপুট এবং থামান।
-525 আপ থেকে কাজ করার কারণটি হ'ল প্রতিটি ইনপুট পুনরাবৃত্তির জন্য অক্ষর আউটপুট হিট হয়। মানটি নেতিবাচক হওয়ায় লুপটি বের না হওয়া এবং নেতিবাচক মানটিকে ধনাত্মক করা না হওয়া পর্যন্ত কিছুই আউটপুট হয় না।
ইনপুটটি ঘরে প্রবেশ করা হয়
A1
।
কোড:
=REGEXEXTRACT(4&2^29,"[^"&A1&"]")
স্টিভ কাসকে ধন্যবাদ 6 বাইট সংরক্ষণ করা।
পূর্ববর্তী কোড:
=REGEXEXTRACT("0123456789","[^"&A1&"]")
ফলাফল:
=REGEXEXTRACT(0&49^9,"[^"&A1&"]")
অনুরূপ যুক্তি দেওয়া, এটিও একটি বৈধ সমাধান। আপডেট উত্তর।
আমি আরও ভাল কিছু গণিত করে প্রোগ্রামটিকে 1 লাইনে এবং 1 বাইটে সরিয়ে 1 বাইট সংরক্ষণ করেছি
~+;@.%a--7;#
কোন নম্বর অনুপস্থিত তার উপর নির্ভর করে ASCII মানগুলির যোগফল 477 থেকে 468 পর্যন্ত range এটি 7 থেকে বিয়োগ করে আমরা -470 থেকে -461 পর্যন্ত পরিসীমা পাই। এই সংখ্যাটি 10 দ্বারা সংশোধন করে আমরা 0 - 9 ব্যাপ্তি পাই যা আমরা এটির পরে মুদ্রণ করতে পারি।
~+; ;# Sums the ASCII values of all characters to stdIn
~ # The # doesn't skip over the ~ because it's on the end of a line
~ Once EOF is hit, the ~ reverses the IP's direction
;# Jump the ; that was used before
--7 Subtract the sum from 7 (really just 0 - (sum - 7))
%a Mod it by 10
@. Print and exit
আমি পূর্ণসংখ্যার ইনপুট না নিয়ে ASCII মানগুলি ব্যবহার করার কারণ হ'ল &
এটি চেষ্টা করুন অনলাইনে command ইওএফ-এ থামে (যদিও এটি আইপি বিপরীত হওয়া উচিত)। ~
সঠিকভাবে, যদিও কাজ করে।
#v~+
@>'i5*--,
সমস্ত 10 সংখ্যার ASCII মানের যোগফল 525। 525 থেকে প্রদত্ত অঙ্কগুলির যোগফলকে বিয়োগ করে আমরা অনুপস্থিত চরিত্রের ASCII মান পাই।
#v~+ Sums the ASCII values of all characters on stdIn
Moves to the next line when this is done
>'i5* Pushes 525 (105 * 5)
-- Subtracts the sum from 525
@ , Prints and exits
param($n)0..9|?{$n-notmatch$_}
ইনপুট নেয় $n
, একটি রেঞ্জ তৈরি করে 0..9
(অর্থাত্ 0, 1, 2 ... 9
), তারপরে একটি রেজেক্স করে এমন সংখ্যাটি বের করার জন্য একটি Where-Object
ধারা (দ্য |?{...}
) ব্যবহার করে -notmatch
। এটি পাইপলাইনে রেখে গেছে, আউটপুট অন্তর্ভুক্ত।
-jkUT
-jkUT
T # 10
U # The unary range of ten: [0,1,..,9]
jk # join that on the empty string
- # set minus
"-jut" এছাড়াও কিন্ডা কাজ করে তবে প্রতিটি ইনট জন্য নতুন লাইন তৈরি করে।
žhISK
ব্যাখ্যা
žh # from the string "0123456789"
K # remove
IS # each digit of the input