পরীক্ষক কোড গল্ফ ভালবাসা


9

"প্রেমের পরীক্ষক" হিসাবে কাজ করতে এমন দুটি প্রোগ্রামের জন্য মোট অক্ষরের সংখ্যা গণনা করে এবং তাদের দৈর্ঘ্যের পণ্যটি খুঁজে পায় এমন একটি প্রোগ্রাম তৈরি করুন।

শর্তাদি: আপনি কোনও 1: 1 উত্তর (3 এর মধ্যে 3 হওয়া ইত্যাদি) পেতে পারেন না not

ইনপুট

এসটিডিআইএন বা নিকটতম বিকল্পের দুটি নাম।

আউটপুট

xকেস উপেক্ষা করে দুটি নামের মধ্যে মিলের মোট অক্ষরের সংখ্যা হিসাবে গণনা করুন । yনামের দৈর্ঘ্যের পণ্য হিসাবে গণনা করুন । তারপরে আউটপুটটি STDOUT বা নিকটতম বিকল্পের কাছে হয়

Name1 and Name2 have x out of y chances of love.

উদাহরণ

ইনপুট:

Wesley
Polly

আউটপুট:

Wesley and Polly have 2 out of 30 chances of love.

ওয়েসলি এবং পলির দুটি অক্ষর মিল রয়েছে yএবং lএবং তাদের দৈর্ঘ্যের গুণমান 6 * 5 = 30।

ইনপুট:

Bill
Jill

আউটপুট:

Bill and Jill have 3 out of 16 chances of love.

বোনাসেস

  • সরলীকৃত ভগ্নাংশ ব্যবহারের জন্য 30 বাইট বিয়োগ করুন, অর্থাত্ x out of yসম্পূর্ণ হ্রাস আকারে।

লিডারবোর্ড:

ভাষা দ্বারা স্থান নির্ধারণ করা হবে। কোড গল্ফটি 17 অক্টোবর প্যাসিফিক ডাইটলাইট সময় (ক্যালিফোর্নিয়া) রাত 10:20 এ শেষ হবে

প্রতিনিধি পুরষ্কার

  • আপনি শীর্ষস্থানীয় 5 (প্রথম স্থান বাদে) থাকার জন্য 10 জন প্রতিনিধি (একটি উত্সাহ) পাবেন।
  • আপনি প্রথম স্থান হওয়ার জন্য 15 জন প্রতিনিধি (স্বীকৃত প্রবেশ) পাবেন।
  • আপনি অন্য ব্যক্তির কাছ থেকেও অনুগ্রহ পেতে পারেন।

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট is

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

** Kslkgh দ্বারা সাইন দ্য ওয়ার্ড থেকে স্নিপেট স্ট্যাক করুন


নিম্নলিখিত অভিনন্দন:

  1. বিজয়ী ডেনিস (পাইথ)
  2. ডেনিস (সিজেএম)
  3. এনবিজেড (এপিএল)
  4. মোলারম্যানফুল (জাভাস্ক্রিপ্ট ইএস 6)
  5. অ্যালেক্স এ। (জুলিয়া)

3
আউটপুট কি জন্য করা উচিত Aaron\nAhmad? নাকি samename\nsamename?
lirtosiast

3
অক্ষরের পুনরাবৃত্তি হওয়ার পরে আপনি কীভাবে মোট অক্ষর গণনা করছেন তা আমি অস্পষ্ট। যদি নামগুলি aএবং bকিছু চিঠি থাকে তবে সেগুলি min(a,b)পুনরাবৃত্তি করার জন্য গণনা করবে ?
xnor

যেমন @ xor বলেছেন, আপনি বারবার চিঠিগুলি কীভাবে গণনা করছেন? দ্বিতীয় উদাহরণ থেকে, এটি প্রদর্শিত হচ্ছে আপনি বারবার অক্ষর গণনা করছেন, তাই যদি প্রথম উদাহরণটি বিপরীত হয়, তবে আপনি কি অন্যরকম ফলাফল আশা করবেন?
রনেট

এটি কি সম্পূর্ণভাবে কলমোগোরভ-জটিলতার সাথে সম্পর্কিত নয় ?

উত্তর:


1

পাইথ, 40 বাইট

jd[z"and"Jw"have"/K-lzl.-rz0rJ0i=J*lzlJK"out of"/JiJK"chances of love.

কোডটি 70 বাইট দীর্ঘ এবং -30 বাইট বোনাসের জন্য যোগ্যতা অর্জন করে ।

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

  [                        Begin an array and fill it with the following:
   z                         The first line of input.
   "and"                     That string.
   Jw                        The second line of input, saved in J.
   "have"                    That string.
           rz0rJ0              Convert both lines to lowercase.
         .-                    Remove the characters form the second string
                               from the first, counting multiplicities.
        l                      Get the length.
     -lz                       Subtract it from the length of the first line.
    K                          Save in K.
                  =J*lzlJ      Save the lines' lengths' product in J.
                 i       K     Compute the GCD of J and K.
   /                         The quotient of K and the GCD.
   "out of"                  That string.
   /JiJK                     The quotient of J and the GCD of J and K.
   "chances of love.         That string.
jd                         Join the elements, separated by spaces.

3

ডায়ালগ এপিএল , 94 91-30 = 61 বাইট

সাধারণত এপিএল গল্ফিংয়ের কোডে ফলাফল হয় যা আরও কমপ্যাক্ট - তবে সাধারণের চেয়ে জটিল নয় - তবে এই ক্ষেত্রে আমি চরগুলি কুৎসিত উপায়ে সংরক্ষণ করি:

{1↓(∊' ',¨⍵,⍪'and' 'have'),' love.',⍨∊((⊢÷∨/)(≢⊃∩/32|⎕ucs¨⍵),×/≢¨⍵),⍪'out of' 'chances of'}

,⍪'out of' 'chances of'2 numbers 2 সংখ্যার টেবিল তৈরি করুন (বাম) এবং পাঠ্যের (ডানদিকে)
×/≢¨⍵দৈর্ঘ্যের পণ্যটি
32|⎕UCS¨⍵উপরের- এবং ছোট হাতের UCS মানগুলিকে সামঞ্জস্য করে
≢⊃∩/ দুটি সেটকে ছেদ
⊢÷∨/করে টালিকে ভাগ করে দেয় এবং তাদের জিসিডির সাথে পণ্যটি
,' love.',⍨∊এটিকে একটি সাধারণ তালিকায় পরিণত করে এবং সংযোজন করে ভালবাসা.
⍵,⍪'and' 'have'নামের একটি 2 × 2 টেবিল তৈরি করুন (বাম) এবং পাঠ্যগুলি (ডানদিকে)
∊' ',¨প্রতিটি টেবিল কক্ষে একটি স্থান প্রস্তুত করে এবং তারপরে সাধারণ তালিকা তৈরি
1↓করে প্রাথমিক অতিরিক্ত অতিরিক্ত স্থান ছেড়ে দিন

এনজিএন -3 বাইট জন্য ধন্যবাদ।


এটি কেবলমাত্র একটি ফাংশন হিসাবে উপস্থিত হয়, যেখানে অপশনটি STDIN এবং আউটপুট থেকে STDOUT এ ইনপুট নির্দিষ্ট করে (অর্থাত্ একটি ফাংশনের পরিবর্তে সম্পূর্ণ প্রোগ্রাম)।
অ্যালেক্স এ।

@AlexA। এপিএল-এর কাছে এসটিডিএন নেই, তবে ফর্ম্যাটে দুটি নাম গ্রহণ করার জন্য একটি প্রম্পট জারি করতে পারে 'Wesley' 'Polly'। আপনি যদি মনে করেন এটি আরও সুষ্ঠু হবে, তবে বিনা দ্বিধায় (U + 2395) লাইনটির একেবারে শেষে (পরে }) এবং স্কোরটি 65 এ
সংযোজন করুন

2

জাভাস্ক্রিপ্ট ES6, 123 বাইট

(a,b)=>a+` and ${b} have ${[...a].map(x=>eval(`/${x}/i.test(b)&&c++`),c=0),c} out of ${a.length*b.length} chances of love.`

"প্রেম" এর জন্য এত কিছু ... আমি কম বাইট দিয়ে সত্যই করতে পারি।

ফায়ারফক্সে কোড স্নিপেট চালান।


2
এটি কেবলমাত্র একটি ফাংশন হিসাবে উপস্থিত হয়, যেখানে অপশনটি STDIN এবং আউটপুট থেকে STDOUT এ ইনপুট নির্দিষ্ট করে (অর্থাত্ একটি ফাংশনের পরিবর্তে সম্পূর্ণ প্রোগ্রাম)।
অ্যালেক্স এ।

2

জুলিয়া, 129 বাইট

কোডটি 159 বাইট তবে এটি -30 বোনাসের জন্য যোগ্যতা অর্জন করে।

A,B=map(chomp,readlines())
a,b=map(lowercase,[A,B])
L=length
r=Rational(L(ab),L(a)L(b))
print("$A and $B have $(r.num) out of $(r.den) chances of love.")

বোনাস না দিয়ে সম্ভবত এটি আরও সংক্ষিপ্ত করা যেতে পারে তবে আমি জুলিয়ার যুক্তিসঙ্গত সংখ্যা প্রকারটি প্রদর্শন করতে চেয়েছিলাম। :)

Ungolfed:

# Read two names from STDIN on separate lines
A, B = map(chomp, readlines())

# Construct their lowercase equivalents
a, b = map(lowercase, [A, B])

# Construct a rational number where the numerator is the
# length of the intersection of a and b and the denominator
# is the product of the lengths
r = Rational(length(a  b), length(a) * length(b))

# Tell us about the love
print("$A and $B have $(r.num) out of $(r.den) chances of love.")

Rational()ফাংশন প্রকারের একটি বস্তু নির্মান Rationalযা ক্ষেত্র রয়েছে numএবং denযথাক্রমে লব ও হর সংশ্লিষ্ট। এখানে এই ধরণের ব্যবহারের সুবিধা হ'ল জুলিয়া আমাদের জন্য হ্রাস করে; ভগ্নাংশটি নিজেরাই হ্রাস করার বিষয়ে আমাদের চিন্তা করতে হবে না।


2

সিজেম, 55 বাইট

ll]_~@_{'~,\elfe=}/.e<:+\:,:*]_2>~{_@\%}h;f/"and
have
out of
chances of love."N/.{}S*

কোডটি 85 বাইট দীর্ঘ এবং -30 বাইট বোনাসের জন্য যোগ্যতা অর্জন করে ।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

কিভাবে এটা কাজ করে

ll]      e# Read two lines and wrap them in an array.
_~       e# Copy the array and dump the lines on the stack.
@_       e# Rotate the array on top and push a copy.
{        e# For each line of the copy.
  '~,    e#   Push the array of all ASCII charcters up to '}'.
  \el    e#   Convert the line to lowercase.
  fe=    e#   Count the occurrences of each character in the line.
}/       e#
.e<      e# Vectorized minimum of the occurrences.
:+       e# Add to find the number of shared charaters.
\:,      e# Compute the length of each line.
:*       e# Push the product.
]_       e# Wrap the stack in an array and push a copy.
2>~      e# Discard the lines of the copy and dump the calculated integers.
{_@\%h}; e# Compute their GCD, using the Euclidean algorithm.
f/       e# Divide each element of the array by the GCD.
         e# This also splits the names, which won't affect printing.

"and
have
out of
chances of love."

N/       e# Split the above string at linefeeds.
.{}      e# Vectorized no-op. Interleaves the arrays.
S*       e# Join the results elements, separated by spaces.

1

ডায়ালগ এপিএল, 84-30 = 54 বাইট

∊' and ' ' have' 'out of' 'chances of love.',¨⍨⊢,{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}(,÷∨)(×/≢¨)

এটি অ্যাডামের উত্তরে অনুপ্রাণিত একটি ট্রেন

×/≢¨ দৈর্ঘ্যের পণ্য

{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵} ভালবাসার সম্ভাবনা

(,÷v)জিসিডি দ্বারা বিভক্ত সংক্ষিপ্তকরণ; উপরের দুটি অভিব্যক্তির মধ্যে এটি ভগ্নাংশ হ্রাস করে

⊢, নামগুলি প্রতিস্থাপন করুন

,¨⍨ ডানদিকে মান সহ বাম দিকে স্ট্রিং shuffles

চেপটান


"প্রেমের সম্ভাবনা" বিশিষ্ট গণনা: {+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵} ↑⍵ arrange the names in a 2×N matrix, pad with spaces ⎕ucs take ascii codes ⍉ transpose the matrix as N×2 32| modulo 32 to case-fold 1↑¨⍨- for each X create a vector 0 0...0 1 of length X ↑ arrange into a 3d array, pad with 0s +⌿ 1st axis sum, obtain freqs per letter and per name ⌊⌿ 1st axis min, obt. nr of common occurrences per letter +/ sum

পরীক্ষা , পরীক্ষা 2


0

জাভা 8, 192 বাইট

BiFunction y=(a,b)->a+" and "+b+" have "+(""+a).chars().filter(c->(""+b).toUpperCase().indexOf(c>'Z'?c-32:c)>=0).count()+" out of "+(""+a).length()*(""+b).length()+" chances of love.";

উদা:

System.out.println(y.apply("Bill","Jill"));
System.out.println(y.apply("Wesley","Polly"));

0

রুবি, 153 বাইট

আমার প্রত্যাশার চেয়ে দীর্ঘ 30 বাইট বোনাস এর জন্য প্রযোজ্য কিনা আমি জানি না।

d=[];2.times{d<<gets.chop<<$_.downcase.chars<<$_.length-1};$><<"#{d[0]} and #{d[3]} have #{d[2]-(d[1]-d[4]).length} out of #{d[2]*d[5]} chances of love."

আপনি কি একটি সংকলক একটি লিঙ্ক যোগ করতে পারেন? (আমি আইডিয়নের প্রস্তাব দিই)
জুনিয়র রবিস্ট

0

পাইথন 2.7, 161 বাইট

import string;r=raw_input;a,b=r(),r();print'%s and %s have %i out of %i chances of love'%(a,b,sum(map(lambda c:c in a and c in b,string.letters)),len(a)*len(b))

এটি এখানে পরীক্ষা করুন: http://ideone.com/jeoVgV

এবং এখানে একটি সংস্করণ যা ভগ্নাংশটি সহজ করে তুলেছে:

import string,fractions;r=raw_input;a,b=r(),r();F=fractions.Fraction(sum(map(lambda c:c in a and c in b,string.letters)),len(a)*len(b))
print'%s and %s have %i out of %i chances of love'%(a,b,F.numerator,F.denominator)

দুর্ভাগ্যক্রমে এটির স্কোর 219-30 = 189 ...


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