শব্দের মূল্য খুঁজে!


13

ভূমিকা

[এখানে শীতল নাম সন্নিবেশ করুন] এর জমিতে, লোকেরা অর্থ দিয়ে জিনিস কিনে না, কারণ প্রত্যেককেই কাগজের প্রতি কঠোর অ্যালার্জি থাকে। তারা প্রতিটি শব্দ দিয়ে অর্থ প্রদান! তবে কীভাবে? ঠিক আছে, তারা প্রতিটি বর্ণের নম্বর দেয়:

a=1,b=2,c=3,etc. 

(আরও কিছু বিশেষ বিধি সহ যা পরে বর্ণিত হবে)

এই চ্যালেঞ্জে আপনার কাজটি বাক্যগুলির মূল্য গণনা করা।

চ্যালেঞ্জ

আপনি একটি ইনপুট নেবেন যা একটি বাক্য হবে। আপনি ধরে নিতে পারেন ইনপুটটির কোনও নতুনলাইন বা পিছনের স্থান নেই। এই নিয়মগুলি ব্যবহার করে বাক্যটির মান গণনা করা চ্যালেঞ্জ হবে:

a=1,b=2,c=3,etc.  
  • বড় হাতের অক্ষরের সাথে সম্পর্কিত বড় হাতের অক্ষরের পরিমাণ 1.5 গুণ

H=h*1.5

সুতরাং, শব্দ

cab

মূল্যবান হবে c+a+b = 3+1+2 = 6

তবে Cabমূলধন সি সহ শব্দটি মূল্যবান হবে (c*1.5)+a+b = 4.5+1+2 = 7.5 সুতরাং আপনার প্রোগ্রামের ইনপুটটি "ক্যাব" হলে আপনার প্রোগ্রামটি 7.5 আউটপুট করে

  • সমস্ত অ বর্ণানুক্রমিক অক্ষর 1 এর মূল্যবান।

এটি কোড গল্ফ, তাই বাইট জেতে সংক্ষিপ্ত উত্তর। শুভকামনা!


4
দাঁড়াও, টাকা কাগজ ?? আমি সবসময় ভেবেছিলাম এটি হয় চকচকে ধাতব ডিস্ক বা পবিত্র কার্ড সোয়াইপ করে কোনও ধরণের যাদু।
Geobits

2
এমনকি মার্কিন নোটগুলিও আসলে তুলো এবং লিনেন দিয়ে তৈরি..কিন্তু আমি অনুমান করি [এখানে শীতল নামটি সন্নিবেশ করান] এর লোকেরা এখনও সে সম্পর্কে ভাবেনি।
jcai

পিছনের শূন্যগুলি কি অনুমোদিত? যেমন, প্রিন্টিং এর 7.0বদলে 7?
kirbyfan64sos

@ kirbyfan64sos 0 টি চলার অনুমতি রয়েছে।
নিকো এ

স্থান সম্পর্কে কি?
জুনিয়ররবিস্ট

উত্তর:


13

পাইথন 3, 71 65 61 বাইট

lambda z:sum((ord(s)*1.5**(s<'_')-96)**s.isalpha()for s in z)

একটি অসাধারণ কাকতালীয়ভাবে, (ord(s)-64)*1.5সমান ord(s)*1.5-96, তাই আমাদের কেবল -96একবার লিখতে হবে । বাকি বেশ সোজা এগিয়ে।

সম্পাদনা করুন: ক্ষুদ্রাকর্ষণ শেননিগান ব্যবহার করে কিছু বাইট বন্ধ করে দেওয়া।


5

পাইথন 2, 120 102 বাইট

সম্পাদনা:

e=raw_input()
print sum([ord(l)-96for l in e if not l.isupper()]+[1.5*ord(l)-96for l in e if l.isupper()])

প্রথম জমা, এত গল্ফ নয় তবে কোথাও শুরু করতে হবে start

def s2(p):
 c=0
 for l in p:
  if l.isupper():
   c+=(ord(l.lower())-96)*1.5
  else:
   c+=ord(l)-96
 return c
print s(raw_input())

প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! পাইথনে কোড গল্ফ করার জন্য এই পোস্টটিতে কিছু টিপস রয়েছে যা আপনাকে আপনার স্কোর আরও ভাল করতে সহায়তা করতে পারে। আপনি সাদা জায়গার পরিমাণ হ্রাস করে শুরু করতে পারেন।
অ্যালেক্স এ।

আপনার দ্বিতীয় তালিকার বোধগম্যতায় কেন (অর্ডার (l.lower ()) - 96) * 1.5 কে 1.5 * অর্ডার (l) -96 দিয়ে প্রতিস্থাপন করবেন না। আপনি জানেন যে এল উচ্চতর তাই কেবল এটির সাথে কাজ করুন এবং পেরেনগুলি সরানোর জন্য গুণ করুন (*৪ * 1.5 1.5 = 96)।
শাসক 501

আপনি একটি বন্ধ হওয়া পেরেন এবং forবোধগম্যতার মধ্যে স্থানও সরাতে পারেন ।
অ্যালেক্স এ

যদি আমি ভুল না হয়ে থাকি তবে আপনি ফলাফলটিকে eফিরে আসার জন্য প্যারামিটার হিসাবে ল্যাম্বদা তৈরি করে এটিকে আরও ছোট করে তুলতে পারেন ।
অ্যালেক্স এ

"বোঝার" এক?
বার্ট

5

পাইথ, 23 20 বাইট

sm|*hxGrdZ|}dG1.5 1z

লাইভ ডেমো এবং পরীক্ষার কেস।

ব্যাখ্যা

 m                 z    For each input character
    hxGrdZ              Get the value of it's lowercase form, or 0 for non-alphabetic characters
   *      |}dG1.5       Multiply it by 1 if it's lowercase, 1.5 if uppercase
  |               1     If it's still zero, it's a non-alphabetic character, so use 1 as its value
s                       Sum of all the values

এখানে পূর্ণসংখ্যার হিসাবে বুলিয়ান মানগুলির বেশ কয়েকটি সৃজনশীল ব্যবহার।

23-বাইট সংস্করণ:

sm+*hxGJrdZ|}dG1.5!}JGz

লাইভ ডেমো এবং পরীক্ষার কেস।


এটির জন্য ভুল জিনিসটি প্রকাশিত হয় .(সমস্ত বর্ণমালাবিহীন অক্ষরের মূল্য 1 হওয়া উচিত)
লিন

1
@ মরিস ফিক্সড !!
kirbyfan64sos

4

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

s->sum(c->isalpha(c)?(64<c<91?1.5:1)*(c-(64<c<91?'@':'`')):1,s)

এটি কেবলমাত্র বোঝার মাধ্যমে নির্মিত একটি অ্যারের যোগফল দেয় যা ইনপুট স্ট্রিংয়ের অক্ষরগুলির উপরে লুপ করে এবং তাদের কোডপয়েন্টগুলিতে পাটিগণিত সম্পাদন করে।

Ungolfed:

function char_score(c::Char)
    (64 < c < 91 ? 1.5 : 1) * (c - (64 < c < 91 ? '@' : '`')) : 1
end

function sentence_value(s::String)
    sum(char_score, s)
end

পদ্ধতির সমাধানের জন্য গ্লেন ওকে ধন্যবাদ


2

আটকে , 85 43 বাইট

হাঁ হাঁ, আমি জানি, পাইথন খাটো ..: পি আমি এখন Tryth হিসাবে একই লজিক ব্যবহার করছি, অধিকাংশ অংশ জন্য।

s_"str.isalpha"fgl;l-|0Gc"_91<1.5;^*96-":++

ব্যাখ্যা:

s_                                            # Take input & duplicate
  "str.isalpha"fg                             # Filter for only alpha chars, save
                 l;l-|                        # Determine number of symbols in start string
                      0Gc                     # Get saved string, convert to char array
                         "_91<1.5;^*96-":     # Logic to find score for each letter
                                         ++   # Sum the list of nums, add to # of symbols


1

সিজেম, 30 বাইট

q:i91,64fm1.5f*32,5f-+1fe>f=:+

এটি কীভাবে কাজ করে (বাহ, আমি এর মধ্যে একটিও তৈরি করিনি!):

   91,64fm1.5f*32,5f-+1fe>      Construct an array so that a[i] == score for chr(i)
q:i                             Read STDIN and convert to ASCII codes
                          f=    Index each from the array
                            :+  Sum the result

1

এফ #, 168 বাইট

এখনও সত্যিই গল্ফ হয়নি, তবে একটি সূচনা:

fun(w:string)->w|>Seq.map(fun c->if Char.IsLetter c then (if Char.IsUpper(c) then (float)(Math.Abs(64-(int)c))*1.5 else (float)(Math.Abs(96-(int)c))) else 1.0)|>Seq.sum

এখানে আরও পাঠযোগ্য সংস্করণ:

let calc (w : string) =
    w
    |> Seq.map (fun c -> if Char.IsLetter c then (if Char.IsUpper(c) then (float)(Math.Abs(64 - (int)c)) * 1.5 else (float)(Math.Abs (96 - (int)c))) else 1.0)
    |> Seq.sum

1

কে, 30

+/1^(,/1 1.5*(.Q`a`A)!\:1+!26)

k)+/1^(,/1 1.5*(.Q`a`A)!\:1+!26)"Programming Puzzles & Code Golf"
349f

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

.Q`a`A লোয়ারকেস এবং বড় হাতের অক্ষরের দুটি তালিকা উত্পন্ন করে

k).Q`a`A
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"

!:1+til 261 থেকে 26 পর্যন্ত প্রতিটি তালিকার প্রতিটি অক্ষরের মানচিত্র

k)(.Q`a`A)!\:1+!26
"abcdefghijklmnopqrstuvwxyz"!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

প্রথম তালিকাটি 1 দ্বারা গুণান, সর্বশেষে 1.5

k)1 1.5*(.Q`a`A)!\:1+!26
"abcdefghijklmnopqrstuvwxyz"!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26f
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"!1.5 3 4.5 6 7.5 9 10.5 12 13.5 15 16.5 18 19.5 21 22.5 24 25.5 27 28.5 30 31.5 33 34.5 36 37.5 39

ব্যবহার করে একটি একক অভিধানে রাজে ,/

k)(,/1 1.5*(.Q`a`A)!\:1+!26)
a| 1
b| 2
c| 3
d| 4
..

সম্পর্কিত স্কোরগুলিতে ইনপুট স্ট্রিংয়ের অক্ষরগুলি মানচিত্র করুন

k)(,/1 1.5*(.Q`a`A)!\:1+!26)"Programming Puzzles & Code Golf"
24 18 15 7 18 1 13 13 9 14 7 0n 24 21 26 26 12 5 19 0n 0n 0n 4.5 15 4 5 0n 10.5 15 12 6

1 দিয়ে কোনও নাল মান পূরণ করুন

k)1^(,/1 1.5*(.Q`a`A)!\:1+!26)"Programming Puzzles & Code Golf"
24 18 15 7 18 1 13 13 9 14 7 1 24 21 26 26 12 5 19 1 1 1 4.5 15 4 5 1 10.5 15 12 6

সমষ্টি

k)+/1^(,/1 1.5*(.Q`a`A)!\:1+!26)"Programming Puzzles & Code Golf"
349f

1

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

l=process.argv[2].split(""),r=0;for(k in l)c=l[k],o=c.toLowerCase(),r+=(o.charCodeAt(0)-96)*(o===c?1:1.5);console.log(r);

নোড (নোড index.js "ক্যাব") সহ জেএস ফাইল কল করুন


1

ম্যাটল্যাব, 68 বাইট

অক্ষরগুলি স্বয়ংক্রিয়ভাবে পূর্ণসংখ্যায় কাস্ট করা হয় এবং এই বুলিয়ান মানগুলি পূর্ণসংখ্যার হিসাবে সংক্ষিপ্ত করা যায়।

sum([t(t>96&t<132)-96,(t(t>64&t<91)-64)*1.5,t<65|(t>90&t<97)|t>122])

1

পার্ল 5, 77 বাইট

@_=split//,$ARGV[0];$i+=(ord)*(/[a-z]/||/[A-Z]/*1.5||96/ord)-96for@_;print$i

পরীক্ষিত v5.20.2


1

জাভাস্ক্রিপ্ট (ES6), 85 82 80 67 বাইট

আমি এর মত দ্রুত এবং সহজ চ্যালেঞ্জ পছন্দ করি। :)

t=>[...t].map(c=>u+=(v=parseInt(c,36)-9)>0?v*(c>'Z'||1.5):1,u=0)&&u

এটি প্রতিটি চরকে বেস -৩ number সংখ্যা হিসাবে ব্যাখ্যা করে, এটি ৯ ( a-zবা A-Z) এর চেয়ে বেশি হলে এটি 1 বা 1.5 দ্বারা গুণিত করে এবং এর পরিবর্তে 1 দিয়ে কাজ করে। সর্বদা হিসাবে, পরামর্শ স্বাগত!


1
চারকোডএটে 0 তে বট প্রয়োজনীয়
ডাউনগোট

@ভিহান তা জানতেন না; টিপ জন্য ধন্যবাদ!
ইটিএইচ প্রোডাকশনস

কেন ব্যবহার করবেন নাtoString(36)
l4m2

@ l4m2 আমি নিশ্চিত না যে .toString(36)এখানে কীভাবে প্রযোজ্য। তুমি কি এরকম কিছু বোঝাতে চাও parseInt(c,36)? আসলে, এটি আরও কম হতে পারে ...
ETH প্রোডাকশনগুলি

আপনি পুনরাবৃত্ত হয়ে এবং 2/3 ব্যবহার করে কিছু বাইট সংরক্ষণ করতে পারেন যখন পার্সেন্ট আইএনএন ফেরত দেয়: ([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
রিক হিচকক



0

পিএইচপি, 102 বাইট

foreach(str_split($argv[1])as$c){$v=ord($c)-64;$s+=A<=$c&&$c<=Z?1.5*$v:(a<=$c&&$c<=z?$v-32:1);}echo$s;

ব্যবহারের উদাহরণ:

$ php -d error_reporting=0 value.php cab
6
$ php -d error_reporting=0 value.php Cab
7.5
$ php -d error_reporting=0 value.php 'Programming Puzzles & Code Golf'
349

অ্যালগরিদম বিশেষ কিছুই। প্রথম প্রোগ্রামের আর্গুমেন্ট ( $argv[1]) থেকে প্রতিটি অক্ষর বিপরীতে Aএবং Zতারপরে aএবং তার zঅনুসারে গণনা করা হয়।


0

পাওয়ারশেল, 108 বাইট

সুদৃ .় প্রতিযোগিতামূলক, আমি অবাক আছি kind একটি কমপ্যাক্ট টের্নারি অপারেটর না থাকার জন্য খুব জঞ্জাল নয়।

কোড:

$a=[char[]]$args[0];$a|%{$b=$_-64;If($b-in(1..26)){$c+=$b*1.5}ElseIf($b-in(33..58)){$c+=$b-32}Else{$c++}};$c

ব্যাখ্যা:

$a=[char[]]$args[0]                # Take command-line input, cast as char array
$a|%{                              # For each letter in the array
  $b=$_-64                         # Set $b as the int value of the letter (implicit casting), minus offset
  If($b-in(1..26)){$c+=$b*1.5}     # If it's a capital, multiply by 1.5.
                         # Note that $c implicitly starts at 0 the first time through
  ElseIf($b-in(33..58)){$c+=$b-32} # Not a capital
  Else{$c++}                       # Not a letter
  }
$c                                 # Print out the sum

0

সি, 85 বাইট

float f(char*s){return(*s-96)*!!islower(*s)+1.5*(*s-64)*!!isupper(*s)+(*++s?f(s):0);}

!!সামনে islowerএবং isupperপ্রয়োজনীয়, কারণ এই ফাংশন দ্বারা ফিরে বুলিয়ান মান হতে নিশ্চিত করা হয় না 0এবং 1সত্য মান ছিল 1024প্রকৃতপক্ষে আমার সিস্টেমে!


0

ক্যান্ডি , 26 22 বাইট

(~ "একটি" <{একটি # 64-2 / ​​3 * | একজন # 96-} জ) টু Z

ফ্যাক্টরিজেশন ট্রিকের জন্য @ ট্রাইথকে ধন্যবাদ!

(~"a"<{A2/3*|A}#96-h)Z

অনুরোধটি ইন-ইন পতাকা হিসাবে রয়েছে candy -I "Cab" -e $prg

এটির দীর্ঘ ফর্মের কোডটি হ'ল:

while     # loop while able to consume characters from stack
  peekA   # A gets stack to
  "a"
  less    # is pop() < "a"
  if
    pushA   # capitalized
    digit2
    div
    digit3
    mult
  else
    pushA   # lower case
  endif
  number
  digit9
  digit6
  sub
  popAddZ   # add pop() to counter register Z
endwhile
pushZ       # push Z onto stack as answer

0

প্রোলোগ (এসডাব্লুআই), 101 বাইট

কোড:

X*Y:-X>64,X<91,Y is X*1.5-96;X>96,X<123,Y is X-96.
_*1.
p(L):-maplist(*,L,A),sumlist(A,B),write(B).

ব্যাখ্যা:

X*Y:-X>64,X<91,       % When X is upper case
     Y is X*1.5-96    %      Y is 1.5 times charvalue starting at 1
     ;X>96,X<123,     % OR when X is lower case
     Y is X-96.       %      Y is charvalue starting at 1
_*1.                  % ELSE Y is 1
p(L):-maplist(*,L,A), % Get list of charvalues for all chars in string
      sumlist(A,B),   % Take sum of list
      write(B).       % Print

উদাহরণ:

p(`Cab`).
7.5

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