সমস্ত অক্ষর সমান যেখানে কলামগুলি সন্ধান করুন


18

আমি এই প্রশ্নটি জুড়ে এসে পৌঁছেছি এবং ভেবেছিলাম এটি একটি দুর্দান্ত গল্ফ চ্যালেঞ্জ তৈরি করবে। সুতরাং এটি এখানে:

চ্যালেঞ্জ:

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

ইনপুট এবং আউটপুট:

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

উদাহরণ ইনপুট (এসও প্রশ্ন থেকে নির্লজ্জভাবে চুরি):

abcdefg
avcddeg
acbdeeg

ইনপুটটি পড়ার পরে, আপনার প্রোগ্রামটি প্রতিটি মিলে যাওয়া কলামের অবস্থান এবং এতে থাকা অক্ষরগুলি মুদ্রণ করবে। (আপনার প্রোগ্রামটি তবে দরকার নেই, আরও ইনপুট পড়া বন্ধ করতে পারে যদি এটির সাথে এটি নির্ধারণ করা যায় যে কোনও মেলানো কলাম নেই)) কোনও যুক্তিসঙ্গত আউটপুট বিন্যাস অনুমোদিত; বিশেষত, আপনি পজিশনের জন্য 0-ভিত্তিক বা 1-ভিত্তিক সূচক ব্যবহার করতে পারেন।

উপরের ইনপুটটির জন্য উদাহরণ আউটপুট (0-ভিত্তিক সূচক ব্যবহার করে):

0: a
3: d
6: g

স্কোরিং:

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

  • অসম দৈর্ঘ্যের ইনপুট লাইনগুলি সঠিকভাবে পরিচালনা করার জন্য অক্ষর। (আউটপুটে সংক্ষিপ্ত ইনপুট লাইনের শেষের অবস্থানগুলি থাকা উচিত নয়))
  • Ar স্বেচ্ছাসেবী ইউটিএফ -8 এনকোডযুক্ত ইউনিকোড অক্ষর সমন্বিত ইনপুট সঠিকভাবে পরিচালনা করার জন্য অক্ষর।

অনুপ্রেরণার জন্য, আপনি এসও প্রশ্নে কিছু অসম্পূর্ণ সমাধান পেতে পারেন (উপরে দেখুন)।

ব্যাখ্যা:

  • কেবল পজিশন এবং চরিত্রগুলিকে সম্মতি জানাতে "যুক্তিসঙ্গত আউটপুট" হিসাবে গণনা করা 0a3d6gহয় না । আপনার আউটপুটটির প্রতিটি উপাদানগুলির মধ্যে কিছু ধরণের বিভাজক (যেমন একটি স্থান) সরবরাহ করা উচিত যাতে এটি নির্বিঘ্নে পার্স করা যায়।

  • ইনপুটটি স্ট্যান্ডার্ড ইনপুট স্ট্রিমে সরবরাহ করা হবে ( stdin), বা আপনার পছন্দের ভাষার কাছে পাঠ্য ফাইলের ইনপুট প্রক্রিয়াটি সবচেয়ে স্বাভাবিক using (আপনার নির্বাচিত ভাষায় যদি না আছে ফাইল ইনপুট জন্য একটি প্রাকৃতিক প্রক্রিয়া যাই হোক না কেন আত্মা নিকটস্থ মনে হয়, না।)

  • ইনপুটটি শেষ হয় না যখন আরও কোনও ডেটা পড়তে হয় না (অর্থাত্‍ যখন ফাইলের শেষের অবস্থা দেখা দেয়)। আপনি যদি চান, আপনার প্রয়োজন হতে পারে যে ফাঁকা রেখা দ্বারা ইনপুটটি সমাপ্ত করা উচিত (যা আপনি অবশ্যই ইনপুটটির অংশ হিসাবে গণনা করবেন না, অবশ্যই)। যদি আপনি এটি করেন তবে দয়া করে আপনার উত্তরে এটি উল্লেখ করুন যাতে অন্যরা পরীক্ষার জন্য সঠিক ইনপুট সরবরাহ করতে পারে।

  • শেষ ইনপুট সহ প্রতিটি ইনপুট লাইন একটি নতুন লাইন চরিত্রের সাথে শেষ হয়। আপনার উত্তরটি অবশ্যই এই নতুন লাইনের সাথে মিলে যাওয়া কলাম হিসাবে প্রতিবেদন করবে না। (ঠিক আছে যদি আপনার সমাধানটিও ইনপুট পরিচালনা করতে পারে যেখানে শেষ লাইনের একটি নতুন লাইনে শেষ হয় না, তবে এটির প্রয়োজন নেই।)


সুতরাং একটি ফাঁকা লাইন কি ইনপুট সমাপ্ত করে?
স্টিভেন রাম্বালস্কি

"আপনার আউটপুটটির প্রতিটি উপাদানের মধ্যে কিছু ধরণের বিভাজক সরবরাহ করা উচিত যাতে এটি নির্বিঘ্নে পার্স করা যায়" " একটি স্থান পৃথক হিসাবে গণনা করা হয়?
স্টিভেন রাম্বালস্কি

@ স্টিভেন রাম্বালস্কি: ইনপুটটি শেষ হয় যখন পড়ার মতো আর কোনও ডেটা নেই; আমি অনুমান করি যদি আপনার ভাষাতে ইওএফ সনাক্ত করতে সমস্যা হয় তবে আমি একটি ট্রেলিং ফাঁকা রেখার অনুমতি দিতে পারি। এবং হ্যাঁ, একটি স্থান পুরোপুরি ভাল বিভাজক।
ইলমারি করোনেন

আমরা কি কিছু নির্বিচারে ইউটিএফ -8 এনকোডযুক্ত ইউনিকোড অক্ষরগুলির নমুনা কোড পেতে পারি?
ব্যবহারকারী অজানা

উত্তর:


12

এপিএল, 25 টি অক্ষর

∩/{0=⍴⍵:⍬⋄(⊂⍵,⍨¨⍳⍴⍵),∇⍞}⍞

আমি আমার দোভাষী হিসাবে ডায়ালগ এপিএল (সংস্করণ 13) ব্যবহার করেছি। এটি অসম দৈর্ঘ্য এবং ইউনিকোড (ইউটিএফ -8) অক্ষরের উভয় ইনপুট পরিচালনা করে।

উদাহরণ:

      ∩/{0=⍴⍵:⍬⋄(⊂⍵,⍨¨⍳⍴⍵),∇⍞}⍞
abcdefg
avcddeg
acbdeeg

  1 a  4 d  7 g  

      ∩/{0=⍴⍵:⍬⋄(⊂⍵,⍨¨⍳⍴⍵),∇⍞}⍞
test日本
blat日本国foo

  4 t  5 日  6 本 

ডান থেকে বামে কিছুটা ব্যাখ্যা:

  • এই উত্তরটির প্রধান অংশটি হ'ল সরাসরি ফাংশন (মূলত, বেনামে ফাংশন), কোঁকড়া ধনুর্বন্ধনী মধ্যে সংজ্ঞায়িত করা হয়। এর ডান যুক্তি দ্বারা নির্দিষ্ট করা হয়েছে
    • 0=⍴⍵:⍬এটি আমাদের প্রথম প্রকাশ, এবং এটি খালি লাইন পেয়েছি কিনা তা পরীক্ষা করে (যেমন, আমাদের কাজ শেষ হয়েছে)। শর্তসাপেক্ষভাবে কোলনের ডানদিকে অভিব্যক্তিটি সম্পাদন করতে এটি একটি প্রহরী (বহু কার্যকরী প্রোগ্রামারগুলির একটি পরিচিত নির্মাণ) ব্যবহার করে। এই ক্ষেত্রে, 0 যদি সঠিক আর্গুমেন্টের আকার / দৈর্ঘ্যের ( ) সমান হয় , আমরা খালি সেটটি ( ) ফিরিয়ে দেব ।
    • ফাংশনের মধ্যে দুটি এক্সপ্রেশন পৃথক করে। পূর্বের অভিব্যক্তিটি যদি মূল্যায়ন না করে (এবং এভাবে কোনও কিছুই ফেরত না), তবে আমরা পরবর্তী অভিব্যক্তিতে চলে যাই।
    • আমরা স্ব-রেফারেন্স ফাংশন ( ) ব্যবহার করে পুনরাবৃত্তভাবে ফাংশনটি কল করি । ফাংশনটির যুক্তি হ'ল কোয়েট-কোয়াড ( ) দ্বারা প্রদত্ত অ মূল্যায়িত ব্যবহারকারী ইনপুটটির একটি লাইন ।
    • ⊂⍵,⍨¨⍳⍴⍵ স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য জোড়া তৈরি করে, যেখানে প্রতিটি জোড়ের প্রথম উপাদানটি স্ট্রিংয়ে থাকে এবং এর দ্বিতীয় উপাদানটি হ'ল অক্ষর।
    • ⍳⍴⍵1 থেকে ভেক্টর দেয় ⍴⍵বা ইনপুট স্ট্রিংয়ের দৈর্ঘ্য।
    • ⍵,⍨¨,⍨প্রতিটি ( ¨) উপাদানকে তার বামে ( , এই ক্ষেত্রে ব্যবহারকারীর ইনপুট) এবং ডানদিকে পরিবর্তিত কনটেনটেশন ফাংশন ( ) প্রয়োগ করে । সংক্ষেপণ ক্রিয়াকলাপটি পরিবর্তনের ফলে এর বাম এবং ডান যুক্তিগুলি অদলবদল হয়।
    • অবশেষে, আমরা ফলাফলটি ব্যবহার করে ঘিরে ফেললাম , যাতে আমরা ইনপুটগুলির লাইনের মধ্যে পার্থক্য করতে পারি।
  • আমরা প্রাথমিকভাবে ব্যবহারকারীর ইনপুট ( ) দিয়ে আমাদের ফাংশনটি ফিড করি ।
  • পরিশেষে, আমরা /আন্তঃ ছেদ ফাংশন ( ) ব্যবহার করে জোড়গুলির ভেক্টরগুলির ফলে প্রাপ্ত ভেক্টরকে ( ) হ্রাস করি , যা উপ-ভেক্টরগুলির মধ্যে সমস্ত পাওয়া যায় yield

কোনও যুক্তিসঙ্গত কারণেই যখনই আমি এপিএল দেখি যে আমার কাছে জে বা গল্ফস্ক্রিপ্টের জন্য নেই তা আমার কাছে একটি নেতিবাচক নেতিবাচক প্রতিক্রিয়া রয়েছে। তবে দুর্দান্ত সমাধানের জন্য +1 করুন।
স্টিভেন রাম্বালস্কি

আমি আসলে জে তে স্যুইচ করার কথা ভাবছিলাম ... আমি আমার কারণগুলির তালিকাতে এটি ব্যবহার করব। :)
ডিলন কাওয়ার

12

গল্ফস্ক্রিপ্ট (২৮ টি অক্ষর)

n/zip:^,,{.^=.&.,1>{;;}*}%n*

ইউনিকোডের মধ্য দিয়ে পাইপিং করার সময় চরিত্র সেট সমস্যা রয়েছে, তাই কোনও কোয়ার্টার-পয়েন্ট বোনাস নেই।


1
+1 টি। এটিতে আমার উত্তরের চেয়ে কম উত্সাহ দেওয়া উচিত নয়।
স্টিভেন রাম্বালস্কি

9

জে, 57 51 44 40 টি অক্ষর

,.&.>y;y{{.z[y=.I.*/2=/\]z=.];._2]1!:1]3

আমি আস্তে আস্তে কিন্তু অবশ্যই সেখানে পৌঁছে যাচ্ছি। যদিও আমি মনে করি এটি আদর্শ থেকে এখনও অনেক দূরে।

আমি নিশ্চিত হয়েছি যে একটি হুক ব্যবহার করা উত্তর হবে তবে দুর্ভাগ্যক্রমে (44 অক্ষর) নয়:

,.&.>((];({{.)~)([:I.[:*/2=/\]))];._2]1!:1]3

যে কোনও সংক্ষিপ্ততর পেতে আমার সম্পূর্ণ ভিন্ন পদ্ধতির প্রয়োজন হতে পারে।


1
+1 টি। তবে হ্যাঁ, আমি জে থেকে ভাল আশা
স্টিভেন Rumbalski

এটিতে আমার উত্তরের চেয়ে কম উত্সাহ দেওয়া উচিত নয়।
স্টিভেন রাম্বালস্কি

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

8

হাস্কেল, characters৪ টি অক্ষর

main=interact$show.foldl1(filter.flip elem).map(zip[0..]).lines

অসম দৈর্ঘ্যের লাইনগুলি পরিচালনা করে। ইউনিকোড সমর্থন বর্তমান লোকেল সেটিংসের উপর নির্ভর করে।

উদাহরণ আউটপুট:

[(0,'a'),(3,'d'),(6,'g')]

+1 টি। এটিতে আমার উত্তরের চেয়ে কম উত্সাহ দেওয়া উচিত নয়।
স্টিভেন রাম্বালস্কি

7

পাইথন 2, স্কোর 81.5 ( 116 94 86 83 82 বাইট বিয়োগ বোনাস)

import sys
i=0
for x in zip(*sys.stdin)[:-1]:
 i+=1
 if len(set(x))<2:print i,x[0]

চমৎকার পাইথন গল্ফের জন্য +1 তবে আপনি পুরো চারটি অক্ষর হারাতে পারেন: [:-1]ইনপুটটির শেষে বহিরাগত নিউলাইনটি ছাঁটাই না করা প্রয়োজন (যা প্রশ্নের মধ্যে রয়েছে বলে মনে হয় না)।
ক্রিস্টোফিড

@ChristopheD: বাস্তবিক, ফল zip(*sys.stdin)হয় [('a', 'a', 'a'), ('b', 'v', 'c'), ('c', 'c', 'b'), ('d', 'd', 'd'), ('e', 'd', 'e'), ('f', 'e', 'e'), ('g', 'g', 'g'), ('\n', '\n', '\n')]। আমি নতুন লাইনের শেষ টুপলটিকে বাদ দেওয়া এড়িয়ে যাওয়ার উপায় দেখছি না। আমি ভুল বুঝে থাকলে আমাকে সংশোধন করুন। উঁচু করার জন্য আপনাকে ধন্যবাদ।
স্টিভেন রাম্বালস্কি

যদি আপনি আপনার ডেটা ফাইলের শেষ লাইনটি সরিয়ে ফেলেন তবে সেই লাইনটির জন্য টিউপল সম্পূর্ণ হয়নি (একটিকে 'মিস করে \ n' তাই জিপ কেবল সেই ডেটা বিবেচনা করে এবং ফেরত দেয় যা আমরা মুছে ফেলার অনুমতি দিচ্ছি [:-1]Eg উদ্যানzip([1,2,3,4],[1,2,3])=> [(1, 1), (2, 2), (3, 3)]
ক্রিস্টোফিড

@ ক্রিস্টোফিড: প্রতি অনুমান অনুযায়ী, "ইনপুট [...] লাইন নিয়ে গঠিত [...], প্রত্যেকের পরে একটি নতুন লাইন থাকে।"
ইলমারি করোনেন

1
যে ব্যক্তি এই উত্তরটিকে হ্রাস করেছে সে কেন ব্যাখ্যা করবে?
স্টিভেন রাম্বালস্কি

5

(বাশ) শেল স্ক্রিপ্টিং, 105 টি অক্ষর

কারও কাছে যদি এর জন্য আরও কিছু কৌশল থাকে তবে বিনা দ্বিধায় মন্তব্য করুন!

for((i=1;i<`tail -1 $1|wc -c`;i++))do
x="cut -c$i $1";y=`$x`;[ `$x|uniq|wc -l` = 1 ]&& echo $i ${y:3};done

ফলাফল:

1 ক
4 ডি
7 গ্রাম

এটি কাজ করতে আমার সমস্যা হচ্ছে; নমুনা ইনপুটটিতে এটি চালানো ত্রুটিগুলির মতো সিরিজ প্রিন্ট করে /tmp/cols.sh: line 2: [1: command not foundএবং অন্য কিছু না।
ইলমারি করোনেন

@ ইলমারি করোনেন: এটি একটি ম্যাক (তুষার চিতা, 10.6.2) তে পরীক্ষা করা হয়েছিল তবে অন্য কোথাও কাজ করা উচিত। আমি আগামীকাল এটি লিনাক্সে স্থির করতে চাই (একটি ছোট ফিক্স হওয়া উচিত)
ক্রিস্টোফেড

2
ওড়ামাজের প্রতিনিধিটির অভাব ছিল তবে তারা মন্তব্য করতে চেয়েছিলেন: ইলমারির জন্য এটি ভেঙে যায় কারণ "দ্য রিপোর্ট" এর পরে জায়গাটি হারিয়ে যায় [; এবং $ {y: 3 কেবলমাত্র ঠিক 3 লাইন ইনপুট দিয়ে কাজ করবে। ফলন ঠিক করা এবং অনুকূলকরণ (100 টি অক্ষর) while((++i%`tail -1 $1|wc -c`));do x=`cut -c$i $1`;((`uniq|wc -l`==1))<<<"$x"&&echo $i ${x: -1};doneএবং ডিফল্ট মানগুলি ব্যবহার করে এর সাথে আরও একটি সংরক্ষণ করা উচিত for((;++i<`tail -1 $1|wc -c`;))doতবে ব্যাশে একটি অনুপযুক্ত বাগ রয়েছে।
পিটার টেইলর

4

পার্ল, 87 টি অক্ষর (tie চর টাই-ব্রেক বোনাস)

এসও থ্রেড থেকে আমার নিজস্ব সমাধানের একটি গল্ফ সংস্করণ এখানে :

chomp($a=$b=<>);$a&=$_,$b|=$_ for<>;@$_=$$_=~/./sgfor a,b;$b[$i++]eq$_&&say"$i:$_"for@a

এসও সংস্করণ থেকে পৃথক, এই এক আউটপুট জন্য 1 ভিত্তিক সূচক ব্যবহার করে। এটি পার্ল 5.10 sayবৈশিষ্ট্যটি ব্যবহার করে , তাই perl -M5.010(বা সাথে perl -E) চালানো দরকার ।

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

সম্পাদনা করুন: বাগ ঠিক করতে +1 চরিত্র: ইনপুট স্ট্রিংগুলিতে লাইন ফিড থাকে না তার অর্থ এই নয় যে তারা শেষ করতে পারে না $a(যেমন "+" & "J" eq "\n")।


1
chopপরিবর্তে ব্যবহার করে আপনি 1 চর সংরক্ষণ করতে পারেন chomp
টোটো

@ এম 42: ভালো কথা, যদিও আমি বর্তমান সংস্করণটির দৃust়তা পছন্দ করি। আমি মনে করি আমি mআপাতত তা রাখব , এটি এই মুহূর্তে র‌্যাঙ্কিংয়ে কোনও পার্থক্য রাখার মতো নয়। :)
ইলমারি করোনেন

3

টি-এসকিউএল

SELECT N.number, letter = MIN(SUBSTRING(L.line, N.number, 1))
FROM Lines AS L
INNER JOIN master.dbo.spt_values AS N ON N.type = 'P'
WHERE N.number BETWEEN 1 AND (SELECT MAX(LEN(L2.line)) FROM Lines AS L2)
GROUP BY N.number
HAVING COUNT(DISTINCT SUBSTRING(L.line, N.number, 1)) = 1
ORDER BY N.number

2

scala 115 107: (ইউটিএফ -8 পরিচালনা করার জন্য)

io.Source.stdin.getLines.map(_.zipWithIndex).toList.flatten.groupBy(_._2).map(_._2.toSet).filter(_.size==1)

অসম্পূর্ণ, এবং Source.fromFile ("f") পরিবর্তে stdinআরও ভাল জন্য:

io.Source.fromFile ("f").
  getLines.map (_.zipWithIndex).
    toList.flatten.groupBy (_._2). 
      map (_._2.toSet).
        filter (_.size==1)

ফলাফল:

List(Set((a,0)), Set((g,6)), Set((d,3)))

ব্যবহারের জন্য 8 মাপ হ্রাস করার জন্য গ্যারেথকে ধন্যবাদ stdin


আপনি 8 টি অক্ষর সংরক্ষণ করার stdinপরিবর্তে ব্যবহার করতে পারবেন না fromFile("f")?
গ্যারেথ

2

ভিবিএ ( 307.25 284 - 0.75 বোনাস = 283.25)

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

কোড:

Function a(i)
b=Split(Left(i,Len(i)-1),vbCr):c=UBound(b):For q=1 To Len(b(c)):d=Mid(b(c),q,1):If l(b,c,q,d) Then a=a & q & ": " & d & vbCr:Next
End Function
Function l(m, n, o, p)
If n+1 Then l=IIf(o<=Len(m(n)),Mid(m(n),o,1)=p,0) And l(m,n-1,o,p) Else l=Mid(m(n+1),o,1)=p
End Function

ইনপুট / আউটপুট উদাহরণ:

Debug.Print a("abcdefghijklmnop" & vbCr & "abcdefg" & vbCr & "abcabcghijkl" & vbCr)

1: a
2: b
3: c
7: g

2

প্রশ্ন, 32

{a!((*:)x)a:(&)1=(#:')(?:')(+)x}

ব্যবহার

q){a!((*:)x)a:(&)1=(#:')(?:')(+)x}[("abcdefg";"avcddeg";"acbdeeg")]
0| a
3| d
6| g

কে, 22

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

{a!@[*x]a:&1=#:'?:'+x}

1

পিএইচপি, 123 127 :(

আমি এতে সন্তুষ্ট নই (উন্নতি হবার দরকার আছে) তবে এখানে যায়:

<?$a=$b=trim(fgets(STDIN));while($l=fgets(STDIN)){$a&=$l;$b|=$l;}$n=-1;while(@$a[++$n]){echo$a[$n]!=$b[$n]?'':"$n:{$a[$n]}\n";}

প্রুফ এটি কাজ করে।

যদি কেউ $ ক এবং $ বি শুরু করার আরও চতুর উপায় সম্পর্কে চিন্তা করতে পারে তবে দয়া করে আমাকে জানান। মূলত আমার ছিল $a=$b=$n=''এবং eventually বি শেষ পর্যন্ত সঠিক ছিল, তবে [empty] & [anything] == [empty], তাই $ একটিতে কখনই সামগ্রী ছিল না।


সম্পাদনা: নিউলাইন হ্যান্ডলিং (+6) ঠিক করতে হয়েছিল তবে ক্লোজিং ট্যাগ (-2) বাদ পড়ে।


আমি কৌতূহলী, আপনি কেন আপনার উত্তরগুলির বেশিরভাগ সম্প্রদায়কে উইকি করেন?
গ্যারেথ

আমি এই এক বোঝাতে চাইনি। অনেক দিন আগে যখন আমি কোডগল্ফে প্রথম যোগদান করেছি তখন কেউ আমাকে বলেছিল যে এটি মানক। অভ্যাসটি ভেঙে দিতে হবে। যদিও এখন এটি আন-উইকি করতে পারে। কোডগলফ.স্ট্যাকেক্সেঞ্জাংআআআআ / ২২৪৯ / ১৪১৯ (মন্তব্য দেখুন)
মিঃ লামা

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

আপনি সম্ভবত এগুলিকে ফ্ল্যাগ করতে পারেন এবং একজন মডারেটরকে তাদের আন-সিডাব্লুয়ে আনতে বলতে পারেন । কেবল ব্যাখ্যা করুন যে এটি একটি ভুল ছিল।
ইলমারি করোনেন

এটিকে রেখে আপনি দুটি অক্ষর বাঁচাতে পারেন ?>। যাইহোক, আমি কেবল লক্ষ্য করেছি যে আপনার কোডটিতে একটি ত্রুটি রয়েছে: এটি যদি একটি নির্দিষ্ট মিল নির্দিষ্ট করে রেখাযুক্ত করে থাকে তবে এটি একটি অতিরিক্ত মিল মুদ্রণ করে।
ইলমারি করোনেন

1

জাভাস্ক্রিপ্ট (125 134 140 )

for(i=s=[];I=s[++i]=prompt(o='');S=I);for(c=-1;w=r=++c<S.length;o+=r?c+':'+C+'\n':'')for(C=S[c];w<i;)r&=s[w++][c]==C;alert(o)

ডেমো: http://jsfiddle.net/Fv7kY/4/

সম্পাদনা 1 : ধনুর্বন্ধনী এড়ানোর জন্য লুপগুলি পুনরায় সাজান। সাথে []একত্রিত করতে আমি আরম্ভ করুন s। বর্ধনকে wঅভিব্যক্তিতে সরান ।

সম্পাদনা 2 : S=Iসর্বশেষ প্রবেশ করা শব্দটি ক্যাপচার করতে সেট করুন এবং ব্যবহার করে সংরক্ষণ করুন s[1]। একত্রিত r=1এবং ++c<S.length। সেট C=s[c]ভেতরের লুপ এবং তুলনা Cকমান অভিব্যক্তি আগের এবং পরের শব্দের পরিবর্তে s[w][c]==s[w++][c]শুধু s[w++][c]==C। মোট 9 টি অক্ষর সংরক্ষণ করা হয়েছে। এছাড়াও সেট করুন w=r=...কারণ যখন এটি সত্য হয় w=1যা আমাদের wসাথে আরম্ভ করা দরকার ।


1

রুবি (71)

a,*s=*$<.lines
(a.size-1).times{|i|s.all?{|t|t[i]==a[i]}&&p([i,a[i]])}

আউটপুট:

[0, "a"]
[3, "d"]
[6, "g"]

দ্রষ্টব্য: রুবি ১.৯ প্রয়োজন বলে মনে হচ্ছে; রুবি 1.8 সামঞ্জস্যের জন্য, প্রতিস্থাপন t[i]সঙ্গে t[i,1]
ইলমারি করোনেন

1

কমন লিস্প, 183 165 টি অক্ষর

(let((l(loop for m =(read-line)until(equal m "")collect m)))(loop for c across(car l)for i from 0 if(null(remove c(mapcar(lambda(y)(char y i))l)))collect(list i c)))

পঠনযোগ্য ফর্ম্যাট:

(let ((l (loop for m = (read-line) until (equal m "") collect m)))
  (loop for c across (car l)
        for i from 0 
        if (null (remove c 
                         (mapcar (lambda(y) (char y i))l)))
        collect(list i c)))

এটি সরাসরি REPL- এ প্রবেশ করান এবং খালি লাইন দিয়ে শেষ করে লাইনগুলি প্রবেশ করান।


1

সি, 126 অক্ষর

char a[999],b[999];main(i){for(gets(a);gets(b);)for(i=0;b[i];++i)a[i]^b[i]?a[i]=0:0;
while(i--)a[i]&&printf("%d:%c\n",i,a[i]);}

আমি এটাকে দেখছি কিন্তু আমি এটিকে আরও ছোট করতে পারি না। একটি নতুন পদ্ধতির প্রয়োজন হতে পারে।

(কোনও বোনাস পয়েন্ট নেই; প্রথম লাইনটি যদি ছোট হয় তবে এটি কেবল ভিন্ন আকারের লাইনগুলি পরিচালনা করে))


0

নেট # 4 (280) সহ সি #

using c=System.Console;class P{static void Main(){char[]a=c.ReadLine().ToCharArray();int r,i,l=a.Length;m:i=0;n:r=c.Read();if(r>0&&r!=10&&r!=13){if((int)a[i]!=r)a[i]='\0';i++;goto n;}for(;i>0&&i<l;)a[i++]='\0';if(r>0)goto m;for(i=0;i<l;i++)if(a[i]!='\0')c.WriteLine(i+":"+a[i]);}}
  • 1 লাইন, 280 টি অক্ষর
  • বিবৃতি এবং প্রধান পদ্ধতি ব্যবহার করে সমস্ত প্রয়োজনীয় অন্তর্ভুক্ত।
  • প্রোগ্রামের শেষে খালি লাইন প্রয়োজন হয় না , তবে এটি গ্রহণ করবে
  • খালি লাইন উপেক্ষা করা হয়
  • যে কোনও দৈর্ঘ্যের ইনপুট স্ট্রিংগুলি পরিচালনা করে।
  • শেষ অবধি আউটপুট সংরক্ষণ করে (যেখানে মূল উত্তরটি ইনক্রিমেন্টাল আউটপুট সরবরাহ করে)

পঠনযোগ্য সংস্করণ

    char[]a=c.ReadLine().ToCharArray();
    int r,i,l=a.Length;
    m:
    i=0;
    n:
    r=c.Read();
    if(r>0&&r!=10&&r!=13){
        if((int)a[i]!=r)
            a[i]='\0';
        i++;
        goto n;
    }
    for(;i>0&&i<l;)
        a[i++]='\0';
    if(r>0)
        goto m;
    for(i=0;i<l;i++)
        if(a[i]!='\0')
            c.WriteLine(i+":"+a[i]);

আসল উত্তর

সি = সিস্টেম.কনসোল; ক্লাস পি {স্ট্যাটিক শূন্যস্থান মেইন () {চর [] ক; ভার বি = সি.আডলাইন (); এ = বি.টোকচারআরে (); যখন (বি! = "") int এর জন্য আমি 0 = আমি

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


পঠনযোগ্য সংস্করণ:

    static void Readable()
    {
        char[]a;
        string b=System.Console.ReadLine();
        a=b.ToCharArray();
        while(b.Length>0)
        {
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i] != b[i])
                {
                    a[i] = '\0';
                }
                else
                {
                    System.Console.WriteLine(i+": "+a[i]);
                }
            }
            b=System.Console.ReadLine();
        }
    }


আমি যখন চ্যালেঞ্জের পরীক্ষার ইনপুটটিতে এটি চালাই, তখন আমি পাই 0: a 1: b 2: c 3: d 4: e 5: f 6: g 0: a 2: c 3: d 6: g 0: a 3: d 6: g। প্রত্যাশিত আউটপুট হবে 0: a 3: d 6: g
ইলমারি করোনেন

@ ইলমারি ঠিক আছে, তবে এটি প্রতিটি ইনপুট লাইনের পরে কলামগুলি / অক্ষরগুলিকে আউটপুট করে। আপনি যদি কোনও ফাইলকে স্ট্যান্ডার্ড ইনপুট হিসাবে খাওয়ান, তবে আউটপুটটি অদ্ভুত বলে মনে হতে পারে তবে আপনি যদি ম্যানুয়ালি ইনপুট করেন তবে আমি মনে করি এটি অর্থবোধ করে। আমি কীভাবে রিফ্যাক্টর করব তা বিবেচনা করব।
ডক্টর উইলির শিক্ষানবিশ

কোনও লাইন যদি প্রথম লাইনের চেয়ে দীর্ঘ হয় তবে আপনার সমাধান ক্রাশ করে।
টিমউই

@ টিমভি আহ ... এটি নির্দেশ করার জন্য ধন্যবাদ!
ড। উইলির অ্যাপ্রেন্টিস

0

পাইথন 122 টি অক্ষর :

print("\n".join([str(i)+':'+str(x[0]) for i,x in enumerate(zip(*[tuple(x) for x in input().split()])) if len(set(x))<2]))

আপনার )এবং এর মধ্যে কোনও জায়গার দরকার নেই for। পরিবর্তে …str(x[0]) for i,x…, আপনি করতে পারেন …str(x[0])for i,x…। এটি tuple(x) for.split()])) if
সাইওস

-1

রুবি (242)

s = %w{ abcdefg avcddeg acbdeeg aejdjeggd }
cols = []
s.sort{ |a, b| b.size <=> a.size }[0].size.times do |i|
  uneq=true
  l = s[0][i]
  s.each { |w| uneq = false if l != w[i] }
  cols << [l, i] if uneq
end
cols.each { |c| puts c.join('|') }

চ্যালেঞ্জের উদ্দেশ্যটি ছিল স্ট্যান্ডার্ড ইনপুট থেকে লাইনগুলি পড়া। আমি ভাষা (যেমন ব্রাউজার জাভাস্ক্রিপ্ট) এর ক্ষেত্রে কিছুটা স্ল্যাক কাটতে ইচ্ছুক যেখানে ধারণাটি আসলেই নেই, তবে রুবির রয়েছে STDIN( ARGFবা কেবল সরল gets)।
ইলমারি করোনেন

আহ ঠিক আছে. তবে এসটিডিআইএন একটি লাইন গ্রহণ করে তা বিবেচনা করে কি এমন কিছু গ্রহণ করা উচিত: "অন্য লাইনে প্রবেশ করুন, না 'থামাতে"? সুতরাং একটি অ্যারে তৈরি করতে একটি লুপ তৈরি করুন।
agmcleod

আমি প্রশ্নের সাথে কিছু স্পষ্টতা যুক্ত করেছি। মূলত, আপনার ফাইলের শেষের আগ পর্যন্ত আপনার ইনপুট লাইনগুলি পড়া উচিত।
ইলমারি করোনেন

আপনার এক টন অপ্রয়োজনীয় সাদা জায়গা আছে।
সাইয়েস

-1

সি শার্প

List<string> strings = new List<string> { "abcdefg", "avcddeg", "acbdeeg", "aejdjeggd" };
var transposes = from index in Enumerable.Range(0, strings.First().Length)
                 select new string((from s in strings select s[index]).ToArray());
int i = 0;
foreach(string transpose in transposes)
{
   if (transpose.Distinct().Count() == 1)
     Console.WriteLine("{0}: {1}", i , transpose[0]);
   i++;
}

1
হাই, আরজং, এবং কোডগলফ.এসই তে স্বাগতম! আপনার উত্তরে কয়েকটি মন্তব্য: প্রথম, যেহেতু এটি একটি কোড-গল্ফ চ্যালেঞ্জ, আপনি নিজের সমাধানটি যতটা সম্ভব সংক্ষিপ্ত করে তোলার চেষ্টা করবেন বলে আশা করা হচ্ছে; শুরু করার জন্য, আপনার কয়েকটি দীর্ঘ পরিবর্তনশীল নাম রয়েছে যা আপনি সহজেই একক অক্ষরগুলিতে সংক্ষিপ্ত করতে পারতেন এবং কিছু অতিরিক্ত হোয়াইটস্পেস যা আপনি মুছে ফেলতে পারেন। ("গল্ফড" এর সাথে আপনার কোডের একটি পঠনযোগ্য সংস্করণ পোস্ট করা ভাল তবে আপনার আসলে একটি গল্ফযুক্ত সমাধানও পোস্ট করা উচিত)) দ্বিতীয়ত, আপনি যদি প্রশ্নটি মনোযোগ সহকারে পড়েন, আমি উল্লেখ করেছি যে স্ট্যান্ডার্ডগুলি স্ট্যান্ডার্ড ইনপুট থেকে পড়তে হবে , তাদের হার্ডকোড নয়।
ইলমারি করোনেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.