আমি আপনাকে জানি, কিন্তু আপনি আমাকে জানেন না


18

আপনাকে দুটি প্রোগ্রাম লেখার দায়িত্ব দেওয়া হয়েছে। প্রোগ্রাম একটি সমস্ত ইনপুট কিছুই প্রিন্ট আউট আবশ্যক ব্যতীত যখন প্রোগ্রাম বি ইনপুট, যা ক্ষেত্রে এটি প্রিন্ট করা উচিত 1। প্রোগ্রাম বি প্রিন্ট আউট আবশ্যক 1সমস্ত ইনপুট উপর ব্যতীত যখন প্রোগ্রাম একটি ইনপুট, যে ক্ষেত্রে এটা কিছুই প্রিন্ট করা উচিত নয়।

স্কোরিং:

  • উভয় প্রোগ্রামের প্রতিটি চরিত্রের জন্য +1 ।
  • সর্বনিম্ন স্কোর জয়।

3
এই কোয়াইন-ইশ কি এটাকে কোয়াইন হিসাবে ট্যাগ করার পক্ষে যথেষ্ট ? এটা অবশ্যই আমার কাছে মনে হয়।
জাস্টিন 20

পোস্ট করা প্রথম দুটি উত্তর যেমনটি ইঙ্গিত করে যে, অন্য একটি প্রোগ্রাম "থাকা" এই বিবরণগুলিতে মারাত্মকভাবে সংজ্ঞায়িত হয়নি। এবং, আমি @ কুইনকঙ্ক্সের সাথে আছি যে এটির মতো খুব সুন্দর কিছু রয়েছে ine
dmckee

@ কুইনকুনাক্স আমি কুইন ট্যাগ যুক্ত করেছি।
টিমটেক

1
@ কুইনকুনস সত্য, তবে এখন পর্যন্ত কেউ তা করছেন না, যদি না আপনি যদি কোনও কুইনকে এমন কোনও প্রোগ্রামও কল করেন যা ডিস্ক থেকে তার উত্স কোডটি পড়ে এবং এটি প্রিন্ট করে দেয়: পি
অ্যাডিটসু

2
@ অ্যাডিটসু আমি এই উত্তরগুলি খুব পছন্দ করি না। আমি মনে করি আমি একটি খুব suboptimal উত্তর পোস্ট করব যা এটি করে না। আমি ব্যক্তিগতভাবে অনুভব করি যে ফাইলগুলির মাধ্যমে উত্স কোডটি পড়া প্রতারণা করছে; প্রোগ্রাম কোথাও কাজ করা উচিত!
জাস্টিন

উত্তর:


5

জিটিবি , 25

একটি টিআই -৪৪ ক্যালকুলেটর থেকে কার্যকর করা হয়েছে

কার্যক্রম A

`_@_eq;"$w;&

কার্যক্রম B

`_@_eq;"$#w;&

ব্যাখ্যা

`_ একটি স্ট্রিং ইনপুট করুন

@_eq;"এটি উত্স কোডের সমান কিনা তা পরীক্ষা করুন ( #ছোট হাতের অক্ষরের সাথে স্বয়ংক্রিয়ভাবে ছড়িয়ে দেওয়া হয়)

$w;&যদি তাই হয়, প্রদর্শন 1 (অন্যথায় কিছুই) [জন্য Bএটা $#w;&- যদি না, ডিসপ্লে 1 (অন্যথায় কিছুই)]


12

বাশ - 32 টি অক্ষর

স্ক্রিপ্ট এ - 16 টি অক্ষর

cmp -s b&&echo 1

স্ক্রিপ্ট বি - 16 টি অক্ষর

cmp -s a||echo 1

ব্যবহার

$> echo "foo" | ./a
$> cat b | ./a
1
$> echo "foo" ./b
foo ./b
$> cat a | ./b

5

রুবি, 54

একজন

$><<1if$<.read==IO.read(?B)

বি

$><<1if$<.read!=IO.read(?A)

উদাহরণ:

bash-3.2$ ruby A < A
bash-3.2$ ruby A < B
1bash-3.2$ ruby B < A
bash-3.2$ ruby B < B
1bash-3.2$ 

4

জে (62)

যেহেতু আপনি এটি নিষেধ করেন নি ...

প্রোগ্রাম সংরক্ষণ যেমন AএবংB যথাক্রমে।

প্রোগ্রাম এ (30):

exit echo#~(1!:1<'B')-:1!:1[3

প্রোগ্রাম বি (32):

exit echo#~-.(1!:1<'A')-:1!:1[3

এটি কীভাবে কাজ করে (প্রোগ্রাম বি, এ সমান):

  • 1!:1[3: স্টিডিন পড়ুন
  • 1!:1<'A': ফাইল পড়া A
  • -:: দেখুন তারা সমান কিনা
  • -.: ফলাফল অবহেলা
  • #~: ফলাফলটি নিজেই প্রতিলিপি করুন (সুতরাং, 1একটিতে ফলাফল 1এবং 0ফলাফল শূন্য 0s, অর্থাত্ কিছুই নয়)
  • echo: আউটপুট
  • exit: প্রস্থান করুন (জে ইন্টারপ্রেটার যখন ফাইলের শেষে পৌঁছে তখন ডিফল্টরূপে প্রস্থান হয় না)
$ jconsole এ <বি
1
$ jconsole এ <ফু
$ jconsole বি <এ
$ jconsole বি <foo
1
$

এটি কী করে তার একটি সংক্ষিপ্ত ব্যাখ্যা দিতে পারেন?
ike

@ লাইক: তাই করেছে _______
মেরিনাস

3

হাস্কেল - উত্স লোড ছাড়াই - 478 644 অক্ষর

এটি ধরে নেওয়া হয়েছে যে getContents সবসময় একটি নতুন লাইনের সাথে শেষ হয় এবং তাই চেক না করেই চূড়ান্ত চরিত্রটি ড্রপ করে দেয় কারণ আমি এড়িয়ে যাওয়ার মতো মনে করি না

একজন

main=interact$($'1').replicate.(1-).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='-'='*'|n=='*'='-'|True=n;d="main=interact$($'1').replicate.(1-).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='-'='*'|n=='*'='-'|True=n;d="

বি

main=interact$($'1').replicate.(1*).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='*'='-'|n=='-'='*'|True=n;d="main=interact$($'1').replicate.(1*).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='*'='-'|n=='-'='*'|True=n;d="

এটি একটি স্ট্যান্ডার্ড কুইনের মতো কাজ করে তবে অদলবদল করে - অন্যান্য প্রোগ্রাম পাওয়ার জন্য (অন্যত্র এই চরিত্রগুলি এড়ানো)।

প্রত্যাশিত হিসাবে নিম্নলিখিত পরীক্ষার মুদ্রণগুলি (প্রধান = ইন্টারেক্টিভ $ কে = এবং বি = এর সাথে প্রতিস্থাপন)

main=do
  putStrLn "START"
  putStrLn$a "FOO"
  putStrLn$a "main=interact$($'1').replicate.(1*).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='*'='-'|n=='-'='*'|True=n;d=\"main=interact$($'1').replicate.(1*).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='*'='-'|n=='-'='*'|True=n;d=\"\n"
  putStrLn$b "FOO"
  putStrLn$b "main=interact$($'1').replicate.(1-).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='-'='*'|n=='*'='-'|True=n;d=\"main=interact$($'1').replicate.(1-).fromEnum.(/=map r(d++shows d[toEnum 10]))where r n|n=='-'='*'|n=='*'='-'|True=n;d=\"\n"
  putStrLn "END"

-

START

1
1

END

এছাড়াও যদি একচেটিয়া একক লাইন ফাংশনগুলি সহজেই রূপান্তর করতে পারে তবে পছন্দের কোনও উপায় যদি
meta.stackex بدل.com

2

পাইথন 2.7 - 82

ফাইল এ (আক্ষরিক নাম দেওয়া হয়েছে a):

if raw_input()==open('b').read():print 1

বি ফাইল (আক্ষরিক নামটির নাম দেওয়া হয়েছে b):

if raw_input()!=open('a').read():print 1

ব্যতীত সেখানে মোট আপত্তি .py- এটি কি কাজ করে?
টিমটেক

আমি নিশ্চিত যে @ লেগোস্টোরমট্রোপ্র কয়েক মিনিট আগে আমার রুবির উদাহরণগুলি এখানে পোস্ট করা একই পদ্ধতিতে চলবে। ;-)
ড্যারেন স্টোন

1
@ টিমটেক এটি করে যদি আপনি কমান্ড লাইন থেকে তাদের চালনা করেন python a

আমি বোঝাতে চাইছি কী কোনও এক্সটেনশন ছাড়াই কোনও ফাইল তৈরি করাও সম্ভব?
টিমটেক

5
অবশ্যই এটা? আপনি যদি পজিক্স মেশিনে থাকেন touch aতবে অনুমতি থাকলে খালি ফাইল তৈরি করবে। অতিরিক্ত নিষ্ঠুর মজাদার জন্য আপনি touch \~~

2

রুবি, ১66 টি অক্ষর, পড়ার উত্স নেই

উত্তর:

(gets(p)==<<2.tr('&|','|&')*2+'2')&&p(1)
(gets(p)==<<2.tr('&|','|&')*2+'2')&&p(1)
2

খ:

(gets(p)==<<2.tr('|&','&|')*2+'2')||p(1)
(gets(p)==<<2.tr('|&','&|')*2+'2')||p(1)
2

নিশ্চিত হয়ে নিন যে আপনার পাঠ্য সম্পাদকটি নতুন একটি নতুন লাইনের সাহায্যে সংরক্ষণ করবে না।

ব্যবহার (উদাহরণ):

 $ ruby know_a.rb know_b.rb 
1
 $ ruby know_a.rb know_a.rb 
 $ ruby know_b.rb know_a.rb 
 $ ruby know_b.rb know_b.rb 
1

প্রতিটি প্রোগ্রাম HEREdoc এবং স্ট্রিং রূপান্তর ব্যবহার করে অন্যান্য প্রোগ্রামের উত্স তৈরি করে, তারপরে ফলাফলটিকে ইনপুটটির সাথে তুলনা করে।


এটি লেখার পক্ষে যথেষ্ট সহজ ছিল, তবে এখন আমার মস্তিস্কের এমন কিছু অংশ যা পুনরাবৃত্তি বুঝতে পারে না তা জোর দিয়ে বলেছে এটি অনুকূলিত করা যেতে পারে তবে কীভাবে তা জানা যায় না।
হিস্টোক্র্যাট

পি কি? এবং বংশের শেষ কোথায়?
অদিতসু

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

2বংশগত ডিলিমিটার হিসাবে ব্যবহার একটি traditionalতিহ্যগত বিড়ম্বনা। এটি প্রায় কোনও স্ট্রিং হতে পারে।
হিস্টোক্র্যাট

বংশগত বিষয়বস্তু কি কোনওভাবে মূল্যায়ন করা হয়?
অদিতসু

1

হাস্কেল - 138

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

import System.Environment
import Control.Monad
main=do{i<-getContents;p<-getProgName;f<-readFile "ab.hs";when((f==i)/=(p=="B"))(print 1)}

এই উত্সটি উভয় হিসাবে Aএবং সংকলন করুন B

টেস্ট:

% ghc -o A ab.hs
[1 of 1] Compiling Main             ( ab.hs, ab.o )
Linking A ...
% cp A B
% ./A < ab.hs
1
% ./B < ab.hs
% ./A < ab.hi
% ./B < ab.hi
1

কেন দু'বার সংকলন করুন Aএবং তারপরে অনুলিপি Aকরুন B?
এমনিআইপি

কোডটি কপিরাইট করার সময় আমার পক্ষ থেকে এটি ছিল একটি ভুল। যে ইশারা জন্য ধন্যবাদ। ঠিক করবে.
shiona

1

নোড.জেএস - 142 টি অক্ষর

স্ক্রিপ্ট |(অন্যথায় স্ক্রিপ্ট এ হিসাবে পরিচিত) - 80 টি অক্ষর

f=require('fs').readFileSync;f('/dev/stdin','hex')==f('&','hex')&&console.log(1)

স্ক্রিপ্ট &(অন্যথায় স্ক্রিপ্ট বি হিসাবে পরিচিত) - 62 টি অক্ষর

eval(require('fs').readFileSync('|','utf8').replace(/&/g,'|'))

ব্যবহার

# \| is Script A
# \& is Script B

$> echo "foo" | node \| 
$> cat \& | node \| 
1
$> echo "foo" | node \& 
1
$> cat \| | node \&

বিবরণ

স্ক্রিপ্ট বি স্ক্রিপ্ট এ এর ​​বিষয়বস্তু পড়ে এবং ফাইলের নাম এবং অপারেটরটিকে একটিতে অদলবদল করার পরে এটিকে andআবিষ্কার করে or

আমি ফাইলগুলির নাম দিয়েছি &এবং |তাই আমি স্ক্রিপ্ট বিতে একটি একক প্রতিস্থাপন সম্পাদন করতে পারি


1

পাইথন 3 - 102 অক্ষর

ইনপুটটি প্রোগ্রাম 2 এর সমান হলে 1 টি প্রিন্ট করে, অন্যথায় কিছুই নয়:

if input()==open('a.py').read():print('1')

ইনপুটটি প্রোগ্রাম 1 এর মতো না হলে 1 টি প্রিন্ট করে, অন্যথায় কিছুই নয়:

if input()==open('a.py').read():print('1')

সাদা স্থান মুছে ফেলা যাবে না? এছাড়াও আপনি স্ক্রিপ্টগুলি t.py এবং tt.py থেকে a.py এবং b.py এ সংক্ষিপ্ত করতে পারেন
টিমটেক

@ টিমটেক অবশ্যই, ভাল ধারণা। এছাড়াও, আমি শ্বেত-স্থান গণনা করছিলাম না - এটি কেবল পঠনযোগ্যতার জন্য। যদিও নতুন লাইনগুলি সরানো যাবে না।
হোছ 250

হ্যাঁ, আমি পাইথনের নতুন লাইনের সংবেদনশীলতা সম্পর্কে সচেতন।
টিমটেক

নিউলাইনগুলির মধ্যে কেবল একটিই সত্যই সরানো যেতে পারে, কোলনের পরে। অন্যদের জন্য সেমিকোলন যুক্ত হওয়া দরকার, তাই এই নতুন লাইনগুলি সরানোর কোনও সুবিধা নেই।
এজেম্যানসফিল্ড

@ এজেম্যান্সফিল্ড হ্যাঁ, আমি জানি, তবে আমি নতুনভাবে লাইন গণনা করি নি।
হোছ 250

0

বাশ / গ্রেপ - 59 টি অক্ষর

৫১ টি অক্ষর যদি আমরা কেবল প্রকৃত প্রোগ্রামের স্ট্রিংটি গণনা করি।

$ a='grep -cx "$b" | grep -x 1'
$ b='grep -vcx "$a" | grep -x 1'
$ echo 'foo' | eval $a
$ echo $b | eval $a
1
$ echo 'foo' | eval $b
1
$ echo $a | eval $b

-1

আর (62 অক্ষর)

i=identical
A=function(x)if(i(x,B))1
B=function(x)if(!i(x,A))1

সৃষ্টি করে:

> A(123)
> A(A)
> A(B)
[1] 1
> B(123)
[1] 1
> B(A)
> B(B)
[1] 1

মেটা মন্তব্য: শর্টকাট নেই বলে কোড গল্ফে আর মেলা তুলনামূলকভাবে খারাপ airs function ...

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