শর্তাধীন বিবৃতি ছাড়া সন্ধান করুন


23

এই চ্যালেঞ্জটি একটি আরডুইনো মাইক্রোকন্ট্রোলার প্রোগ্রামিং দ্বারা অনুপ্রাণিত হয়েছিল। আমার বোর্ডে বিভিন্ন পিনের সাথে 6 টি এলইডি এবং 6 টি বোতাম সংযুক্ত রয়েছে। কোডে, প্রতিটি বোতাম এবং এলইডি একটি আইডি নম্বর (1-6) বরাদ্দ করা হয়। আইডি নম্বরগুলির সাথে সম্পর্কিত পিন নম্বরগুলি (0-13 থেকে শুরু করে) একটি switchবিবৃতি ব্যবহার করে সন্ধান করা হবে । বিনোদনের জন্য বিশুদ্ধরূপে, আমি ভাবছিলাম যে এইগুলিকে switchকেবল ভবিষ্যতের কোড রক্ষণাবেক্ষণকারীদের ভয়ঙ্কর করার জন্য একটি গাণিতিক / অন্যান্য ক্রিয়াকলাপ দ্বারা সংঘবদ্ধ করা যেতে পারে।

চ্যালেঞ্জ

আইডি নম্বর (পূর্ণসংখ্যা) পরামিতি হিসাবে গ্রহণ করে এমন ফাংশন / ফাংশন সরবরাহ করুন এবং শর্তাধীন বিবৃতি (না if, না switchএবং কোনও ত্রৈমাসিক) ব্যবহার না করে 6 টি এলইডি এবং / অথবা 6 টি বোতামের জন্য পিন নম্বর (পূর্ণসংখ্যা) প্রদান করুন ।

এলইডিগুলির জন্য রিটার্ন মানগুলি:

ID    Pin
1      3 
2      5
3      6
4      9
5     10
6     11

বোতামগুলির জন্য ফেরত মানগুলি:

ID    Pin
1      2 
2      4
3      7
4      8
5     12
6     13

বোনাস চ্যালেঞ্জ

একটি আইডি নম্বর (পূর্ণসংখ্যা) এবং দ্বিতীয় প্যারামিটার (যে কোনও ধরণের) লাগে এমন একটি একক ফাংশন সরবরাহ করুন যা এলইডি বা বোতাম পিনগুলি অনুরোধ করা হয়েছে কিনা তা নির্দেশ করে এবং সংশ্লিষ্ট পিনটি (পূর্ণসংখ্যা) প্রদান করে।

বিধি

এই না একটি Arduino-নির্দিষ্ট চ্যালেঞ্জ। যে কোনও ভাষা ব্যবহার করুন , আপনি যা চান তা করুন।

সম্পাদনা করুন: স্টিভেরিলের পরামর্শে এটি এখন একটি কোড গল্ফ চ্যালেঞ্জ।

শুভকামনা!

(যদি আপনি এখনও পড়ছেন: প্রোগ্রামিং মানদণ্ডে স্বতন্ত্রভাবে অযৌক্তিক এবং নির্বিচারে, ম্যাপিংগুলি আরডুইনো মাইক্রো পিনআউটের উপর ভিত্তি করে P , বোতামগুলি বাকী পিনগুলিতে বরাদ্দ করা হয়)


পিপিসি-তে আমরা এসেছি! আমি ডাউনভিট করি নি, তবে আমি মনে করি এটি কোডগল্ফ হিসাবে আরও ভাল হবে। জনপ্রিয়তার প্রতিযোগিতা এমন পরিস্থিতিতে খুব বিস্তৃত। বিটিডাব্লু , আপনি পোস্ট করার আগে তাদের পর্যালোচনা করার জন্য আমাদের স্যান্ডবক্স meta.codegolf.stackexchange.com/q/2140/15599 এ প্রশ্ন পোস্ট করতে পারেন
স্তর নদী সেন্ট

আপনি যখন "না হলে" বলবেন, আমি কি একটি পূর্ণসংখ্যা হিসাবে শর্তসাপেক্ষ অভিব্যক্তি ব্যবহার করতে পারি? যেমন 1+(1==1)?
kirbyfan64sos

হ্যাঁ, তারা ঠিক আছে। শুধু চ্যালেঞ্জের সন্ধানে থাকেন (উল্লেখিত তিনটি বিবৃতি if, switchএবং তিন) সীমা বন্ধ আছে।


1
@ স্টিভেভারিল এই পরামর্শের জন্য আপনাকে ধন্যবাদ, চ্যালেঞ্জ এখন কোড গল্ফ। আমি যদি মেটার জন্য +5 এর সুনামের প্রয়োজনীয়তা পূরণ করে থাকি, তবে আমি স্যান্ডবক্সে পোস্ট করতাম :) সুতরাং দু'জন ধন্যবাদ +1 জনসংখ্যক নৈমিত্তিককে ন্যূনতম ভোট দেওয়ার জন্য নয়।

উত্তর:


10

সি, 28 বাইট প্রতিটি

p(i){return"@cefijk"[i]&15;}
b(i){return"@bdghlm"[i]&15;}

এটি মূলত kirbyfan64sos এর উত্তর হিসাবে একই, তবে পূর্ণসংখ্যার পরিবর্তে একটি চর অ্যারে ব্যবহার করে এবং এতে একটি ডামি প্রথম বাইট থাকে তাই ফাংশন প্যারামিটার থেকে 1 বিয়োগ করার প্রয়োজন নেই।


9

হাস্কেল, 24 টি বাইট

l 1=3
l n=n+l(div(n+2)3)

যাচাই করতে:

> map l [1..6]
[3,5,6,9,10,11]

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

যাচাই করতে:

> map b [1..6]
[2,4,7,8,12,13]

বোনাস, হাস্কেল, 36 বাইট

a f 1=f+2
a f n=n+a f(n+f+1`div`f+2)

যাচাই করতে:

> map (a 0) [1..6]
[2,4,7,8,12,13]
> map (a 1) [1..6]
[3,5,6,9,10,11]

বাটনগুলির জন্য 0, এলইডিগুলির জন্য 1।


1
বোনাস, আপনি ব্যবহার করতে সক্ষম হওয়া উচিত a f n=n+a f(n+f+div 1f+2)
dfeuer

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

কীভাবে এত দেরি হয়?
dfeuer

7

সি (গণিত), 32 / 27 26 বাইট (বোনাস চ্যালেঞ্জের জন্য 45)

বেশ কিছু লোক বিভিন্ন টেবিল-দেখার সমাধান পোস্ট করেছে, তবে এটি আমার কাছে সহজ উপায় নেওয়ার মতো বলে মনে হয়েছিল .. খাঁটি গাণিতিক ক্রিয়াকলাপগুলির সাথে আমি কতটা ভাল করতে পারি তা দেখতে চেয়েছিলাম:

p(i){return~i&1|i*2^i*!(i%5-1);}
b(i){return i/5*5+1^p(i);}

এটি স্পষ্ট ছিল না যে একটি ফাংশন অন্যকে ডেকে গ্রহণযোগ্য ছিল কি না; যদি তা না হয় তবে তার b(i)পরিবর্তে (33 বাইট) এই বিকল্প সংজ্ঞাটি ব্যবহার করতে পারেন :

b(i){return(i&1|i*2)+i/5-!(i/2);}

বোনাস চ্যালেঞ্জ (45 বাইট):

f(i,t){return(i&1|i*2)+i/5-!(i/2)^t+i/5*5*t;}

( এলইডি t=0জন্য বোতামের জন্য পাস t=1)


5

সি, ৩ by বাইট প্রতিটি (বোনাস চ্যালেঞ্জের জন্য 49 বাইট)

p(i){return 3500459>>(4*(7+~i))&15;}
b(i){return 2390221>>(4*(7+~i))&15;}

আমি দুঃখিত ... আমি কেবল এটি সাহায্য করতে পারি নি ... ঠিক আছে, আমি এখন একটি আসল সমাধান রেখেছি।

বোনাস চ্যালেঞ্জ, 49 বাইট

f(i,t){return(2390221+t*1110238)>>(4*(7+~i))&15;}

ব্যবহার করুন f(button,0)এবং f(pin,1)

আইডিয়নে লাইভ ডেমো।

স্ক্রিনশট

মুল:

p(i){int a[]={3,5,6,9,10,11};return a[i-1];}
b(i){int a[]={2,4,7,8,12,13};return a[i-1];}

1
আমি যদি বুদ্ধিমান উত্তর চাইতাম তবে আমি এখন পিপিসিজিতে পোস্ট করব না আমি: পি মজার বিষয়, সত্যিকারের আরডিনো প্রোগ্রামে এটি ব্যবহারের ফলে সংকলিত বাইনারি (যা বোর্ডে ~ 28 কে স্টোরেজ স্পেস দেওয়া হয়েছে) এর বৃহত আকারের হবে, এড়িয়ে চলা এমন কিছু)।

কীভাবে p(i){return"@cefijk"[i]&15;}b(i){return"@bdghlm"[i]&15;}?
চটজলদি ossifrage

@ স্কোয়ামিশোসিফ্রেজে আপনার নিজের উত্তর হিসাবে সেগুলি পোস্ট করা উচিত। তারা আমার চেয়ে ভাল're :)
kirbyfan64sos

@ kirbyfan64sos ওহ ঠিক আছে তাহলে
খুঁতখুঁতে ossifrage

4

পাইথ - 12 বাইট প্রতিটি

বেস অ্যারে এনকোড করে।

@jC"Ý"14tQ (buttons)
@jC"\r'"12tQ (leds)

শেষটি হ'ল বারো বাইট বাদে আমি কোনও ক্যারেজ রিটার্ন লিখতে পারি না, তাই আমি এড়িয়ে গিয়েছিলাম।

বাটনগুলির জন্য টেস্ট স্যুট

LEDS এর জন্য টেস্ট স্যুট


আমি মনে করি যে এই ওপির উদ্দেশ্য ছিল একটি ফাংশন হবে ("ফাংশন / ফাংশন সরবরাহ করুন"); এটি বোনাস পাওয়ার জন্য তুচ্ছ হওয়া উচিত: এরকম কিছু M@jC@"\rÝ"H+12*G2, যা পিনের জন্য 0 এবং বোতামগুলির জন্য 1 ব্যবহার করে।
kirbyfan64sos

3

পাইথ, বোনাস কেবল: 20 বাইট

M@jC"5i«$xÍ"16+*6HtG

পরম # 2 এলইডি জন্য 0, বোতামের জন্য 1। LED4 এর জন্য পিন # পেতে,g4 0

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

যদি এটি অনুচিত হয় তবে আমার গভীর ক্ষমা চাই এবং আমি আমার প্রবেশিকাটি সরিয়ে দেব।


1
আরে ব্রায়ান টাক! আপনি আমার ভাষা ব্যবহার শুরু করেছেন বলে আমি আনন্দিত। মাল্টেসেনের ধারণার এই পুনঃব্যবহার সম্ভবত ভাল ছিল, যেহেতু বেস এনকোডিং একেবারে নতুন ধারণা নয়। Creditণ প্রদান, যা আপনি করেছেন তা গুরুত্বপূর্ণ। যাইহোক, পাইথকে সমস্ত ক্যাপগুলিতে লেখা উচিত নয় - এটি কোনও সংক্ষিপ্ত বিবরণ নয়, এটি কেবল একটি নাম।
isaacg

2

এমআইপিএস, 16 বাইট

বিট শিফটিং এবং বিটমাস্ক। ইনপুট ইন $a0, আউটপুট ইন $v0

sll     $t0, $a0, 2 
li      $t1, 0xba96530
srlv    $t0, $t1, $t0   
andi    $v0, $t0, 0xf

বোনাসের জন্য, অবিলম্বে ব্যবহার করুন 0xdc87420


গল্ফ করার সময় কি আমাদের উত্সের আকারটি গণনা করা উচিত নয় ? :)
nitro2k01

2

এফ #, ২৮ + ২৮ বাইট

আমি দেখার টেবিল ছাড়াই এটি চেষ্টা করতে চেয়েছিলাম।

let L x=1+x*2-x%4/3-x/5-x/6
let B x=x*2+x/3-x/4+x%6/5*2

1

এসডাব্লুআই-প্রোলগ, 34 টি বাইট

l(I,P):-nth1(I,[3,5,6,9,10,11],P).
b(I,P):-nth1(I,[2,4,7,8,12,13],P).

l/2এলইডি b/2জন্য হয়, বোতাম জন্য।

বোনাস, 66 বাইট

a(I,S,P):-nth1(I,[3:2,5:4,6:7,9:8,10:12,11:13],A:B),(S=0,P=A;P=B).

S = 0 এলইডি জন্য, বাটন জন্য অন্য কিছু।


1

কিউ / কে (প্রতিটি 18 বাইট)

কেবল সূচকের ক্ষেত্রে:

L:0N 3 5 6 9 10 11
B:0N 2 4 1 8 12 13

উদাহরণ:

q) L[2]
5
q) B[6]
13

বোনাস (1 বাইট, প্রদত্ত এল ও বি সংজ্ঞায়িত)

@

উদাহরণ:

q) @[`L;2]
5
q) @[`B;6]
13

এটি প্রতারণামূলকভাবে চালাক ব্যবহার! +1
kirbyfan64sos

1

সিজোম, 10 টি বাইট প্রতিটি

এগুলি বেনামে ফাংশন। অনলাইন ইন্টারপ্রেটারের লিঙ্কগুলি তখন একটি ছোট পরীক্ষার জোয়ারের মধ্যে দেখা যায় যা সমস্ত ইনপুট মানগুলির জন্য ফাংশনটি কার্যকর করে।

ফাংশন 1 (এলইডি):

{5*3|4+3/}

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

ফাংশন 2 (বোতাম):

{_6|5+*5/}

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

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


0

জাভাস্ক্রিপ্ট (ES6), 26/27 বাইট

এলইডি:

a=>`0   
`.charCodeAt(a)

বাটন:

a=>`0\r`.charCodeAt(a)

যদি উপরেরটি না চালিত হয় (যা সম্ভবত) তবে এখানে একটি হ্যাক্সডাম্প রয়েছে:

00000000: 6C 3D 61 3D 3E 60 30 03 - 05 06 09 0A 0B 60 2E 63 |l=a=>`0      `.c|
00000010: 68 61 72 43 6F 64 65 41 - 74 28 61 29 0A 62 3D 61 |harCodeAt(a) b=a|
00000020: 3D 3E 60 30 02 04 07 08 - 0C 5C 72 60 2E 63 68 61 |=>`0     \r`.cha|
00000030: 72 43 6F 64 65 41 74 28 - 61 29                   |rCodeAt(a)|

আমি কাঁচা সিআর এর সাথে কাজ করার জন্য দ্বিতীয়টি পেতে পারি না তাই আমাকে ব্যবহার করতে হয়েছিল \r

বোনাস, 41 বাইট

(a,b)=>`0   
\r`.charCodeAt(a+b*6)

Hexdump

00000000: 28 61 2C 62 29 3D 3E 60 - 30 03 05 06 09 0A 0B 02 |(a,b)=>`0       |
00000010: 04 07 08 0C 5C 72 60 2E - 63 68 61 72 43 6F 64 65 |    \r`.charCode|
00000020: 41 74 28 61 2B 62 2A 36 - 29                      |At(a+b*6)|

দ্বিতীয় প্যারামিটারটি এলইডি জন্য 0 এবং বোতামগুলির জন্য 1।


0

ব্রেইনফ ** কে, 107 বাইট

,>++++++++[>+>++++++<<-<------>]<[>+++<-[>++<-[>+<-[>+++<-[>>>+>+<<<[-]+<-]]]]]>>[<++++++>-]<.>>>[-[-]<-.>]

এটি আমার প্রথম হ্যান্ড-কোডেড বিএফ প্রোগ্রাম, আমি সন্দেহ করি না যে এখানে বেশ কয়েকটি অপ্টিমাইজেশন হতে হবে। তবে এটি এখনও দুর্দান্ত। :)

[]শর্তসাপেক্ষ হিসাবে গণনা করা হচ্ছে কিনা তা আমি নিশ্চিত নই , যদিও ...: /


আপনি যদি একটি ব্যবহার করতে চান তবে আমাদের কাছে বিএফ অপটিমাইজারগুলি পূর্ণ আমাদের কাছে একটি চ্যালেঞ্জ রয়েছে ;)
বিটা ডেকে

@ বেটাডেচে এগুলি দুর্দান্ত দেখায় তবে এগুলির কোনওোটাই আসলে আমার
কোডকে আরও

এইচ এম, এটি লজ্জাজনক: পি
বিটা ডেকে

0

পাওয়ারশেল - 27-27-72

এলইডি আরগ হিসাবে 1..6 ব্যবহার করে

:\>wc -c LED.PS1 & cat LED.PS1 & echo.& powershell -nologo -f LED.PS1 1
27 LED.PS1
(0,3,5,6,9,10,11)[$args[0]]
3

আর্ট হিসাবে 1.6 বোতামটি ব্যবহার করুন

:\>wc -c button.PS1 & cat button.PS1 & echo.& powershell -nologo -f button.PS1 6    
27 button.PS1
(0,2,4,7,8,12,13)[$args[0]]
13

এলইডি বা বাটন ব্যবহার বি 1; l 2; খ 6; আর্গুমেন্ট হিসাবে l 5 ইত্যাদি

:\>wc -c ledbutt.PS1 & cat ledbutt.PS1 & echo.& powershell -nologo -f ledbutt.PS1 b 5
72 ledbutt.PS1
$a=@{"b"=(0,3,5,6,9,10,11);"l"=(0,2,4,7,8,12,13)};$a[$args[0]][$args[1]]
10
:\>powershell -nologo -f ledbutt.PS1 l 5
12    
:\>powershell -nologo -f ledbutt.PS1 b 3
6    
:\>powershell -nologo -f ledbutt.PS1 l 2
4

0

অক্টাভা, 40 বাইট (বোনাস চ্যালেঞ্জ)

অনিয়মমাস ফাংশন ব্যবহার করা:

@(x,y)[3 2;5 4;6 7;9 8;10 12;11 13](x,y)

এই ফাংশনটি সংজ্ঞায়িত করার পরে, এই ফাংশনটি হিসাবে কল করুন ans(x,y), xপিন / বোতাম নম্বরটি কোথায় এবং যথাক্রমে yমানগুলি সহ পিন বা বোতামটি নির্দেশ করে।12

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


0

জাভাস্ক্রিপ্ট 113 74 66 59 52 33 (একটি ফাংশন)

4 বিট মান পেতে বিট শিফট ব্যবহার করা। অবশ্যই পি (এন, 195650864 বা 231240736) এর সাথে কল করা উচিত।

/*
  11   10    9    6    5    3
1011 1010 1001 0110 0101 0011 0000 = 195650864

  13   12    8    7    4    2
1101 1100 1000 0111 0100 0010 0000 = 231240736

                   b >> i * 4 xxxx
                         & 15 1111
                              yyyy (matching 1s)
*/
// Where b = 195650864 for pins and 231240736 for buttons.
function p(i,b){return b>>i*4&15}

বিকল্প।

/*
Using bitwise * 4 for bitwise only.    
function p(i,b){return b>>(i<<2)&15}
*/

0

পার্ল 4 (37 এবং 31 বাইট)

এলইডি (37 বাইট):

$c=pop;$c*2+($c~~[1,2,4,6]&&5.5<=>$c)

... তবে এটি একটি সারণী ব্যবহার করে।

বোতামগুলি (31 বাইট, কোনও অনুসন্ধান নেই):

$c=pop;2*($c+($c==5))+($c%3==0)

0

জাভাস্ক্রিপ্ট (ES6) 18,22,44

সংক্ষিপ্ত তবে বিরক্তিকর সম্পাদনা করুন

// LED 
l=i=>1-~' 134789'[i]
// Buttons
b=i=>[,2,4,7,8,12,13][i]

// bonus
f=(i,t)=>1-~[' 134789',[,0,2,5,6,10,11]][t][i]

//Test

out=x=>O.innerHTML+=x+'\n'

for(i=1;i<=6;i++) out(i +' -> '+l(i) + ' '+b(i) +' '+f(i,0)+' '+f(i,1))
<pre id=O></pre>


0

পাইথন, 31 বাইট প্রতিটি

ঠিক সৃজনশীল বা কিছু নয়, তবে এটি কার্যকর!

l=lambda x:int(" 3569AB"[x],16)
b=lambda x:int(" 2478CD"[x],16)

বোনাস, 44 বাইট

k=lambda x,y:int("3569AB2478CD"[x-1+6*y],16)

y এলইডি জন্য 0 এবং বোতামের জন্য 1 হওয়া উচিত।


0

পাইথন, 60 + 58 = 118 বাইট

p=lambda i:(2**i)*(i<3)+1+(i>2)*(5+3*(i-3))-(i>4)*(i-3+~i%2)
b=lambda i:2**i-(i>2)-(i>3)*(2**(i-1)-1)-4*(i>4)-15*(i==6)

এগুলি ভয়াবহ। আমি জানি না আমি এখানে কী করছি ...

তবে তারা তবে বেশ আকর্ষণীয়! : ডি


0

রুবি, 45 বাইট

->i,t{[3,5,6,9,10,11,2,4,7,8,12,13][t*6+i-1]}

পরীক্ষার ইনপুট:

->i,t{[3,5,6,9,10,11,2,4,7,8,12,13][t*6+i-1]}.call 1,0
=> 3

->i,t{[3,5,6,9,10,11,2,4,7,8,12,13][t*6+i-1]}.call 3,1
=> 7

0

চতুর্থ, 26 বাইট প্রতিটি, 34 বোনাস জন্য

Squeamish দ্বারা সি সংস্করণ অনুরূপ।

: P " CEFIJK" + C@ F AND ;
: B " BDGHLM" + C@ F AND ;

বোনাস:

: A " CEFIJKBDGHLM" + + C@ F AND ;

এলইডি জন্য 0 এবং বোতামের জন্য 6 ব্যবহার করুন। এবং প্যারামিটার অর্ডার কিছু যায় আসে না


-1

পাইথ, 19 বাইট প্রতিটি

L.&.>3500459*4-6b15
L.&.>2390221*4-6b15

পিন এবং বোতামের জন্য যথাক্রমে।

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