কেন্দ্রটি সন্ধান করুন


24

ASCII অক্ষরের একটি স্ট্রিং দেওয়া হয়েছে, মাঝের অক্ষরটিকে আউটপুট দিন। যদি কোনও মাঝের অক্ষর না থাকে (যখন স্ট্রিংটির একটি দৈর্ঘ্য থাকে), ASCII অক্ষর আউটপুট করুন যার অর্ডিনাল দুটি কেন্দ্রের অক্ষরের মেঝেতে গড়। স্ট্রিংটি খালি থাকলে একটি খালি স্ট্রিং আউটপুট হওয়া উচিত।

পরীক্ষার কেস:

12345 => 3

Hello => l

Hiya => q

(empty input) => (empty output)

চরিত্রগুলির মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জয়ী। (বাইট না।)

লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে লিডারবোর্ড তৈরি করে) ক) ভাষা প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

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

## Language Name, N characters 

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

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

সেখানে যদি আপনি আপনার শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের যোগফল বা আপনি আলাদাভাবে দোভাষী পতাকা শুল্ক তালিকাভুক্ত করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 characters 

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 characters 


15
সাধারণত আমরা বাইটে স্কোর করি যাতে লোকেরা তাদের পুরো কোডটি সংকুচিত করতে না পারে, কারণ এর ফলে বিরক্তিকর সমাধান হয়। আপনি কি এটি নিশ্চিত?
ডাউনওয়েট

1
@ ভ ɪʜᴀɴ আমি মনে করি না যে এটি এখানে একটি সমস্যা হবে, যেহেতু সমাধানগুলি যে কোনও উপায়েই খুব ছোট হবে, সুতরাং সংকোচনের পক্ষে এটি উপযুক্ত হবে না।
Ypnypn

9
পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম চ্যালেঞ্জ!
কনর ও'ব্রায়েন

2
আমরা কি ফাংশন লিখতে পারি?
ডাউনওয়েট

10
প্রো-টিপ: আপনার উত্তরগুলি ইউটিএফ -32 এ এনকোড করুন। চরিত্র প্রতি 4 বাইট। অথবা হতে পারে ওপিকে কেবল চরিত্রের স্কোরিং থেকে মুক্তি দেওয়া উচিত।
মেগো

উত্তর:


9

পাইথ, 15 বাইট

Cs.O@R/lz2_BCMz

প্রদর্শন

ইনপুট হিসাবে "হাইয়া" দিয়ে শুরু করা:

              z    "Hiya"                                      Input
            CM     [72, 105, 121, 97]                          Character values
          _B       [[72, 105, 121, 97], [97, 121, 105, 72]]    Pair with reversal
      /lz2         2                                           Halfway index
    @R             [121, 105]                                  That element in each
  .O               113.0                                       Average
 s                 113                                         Floor
C                  "q"                                         Cast to character
                   q                                           Print implicitly

মনে রাখবেন যে খালি ইনপুটটিতে ত্রুটিযুক্ত এটি ক্র্যাশ হয়ে গেছে এবং STDOUT- তে কিছুই প্রিন্ট করে না যা কোড-গল্ফ ডিফল্ট দ্বারা খালি স্ট্রিং আউটপুট দেওয়ার একটি বৈধ উপায়।


Bifurcate এর ইউটিলিটি আবার দেখায়।
lirtosiast

হু বিভাজনটি দুর্দান্ত।
মালটিসেন

@ কেনানরহটন আপনার প্রস্তাবিত সম্পাদনার প্রতিক্রিয়ায়, প্রতিশ্রুতিবদ্ধ যা Cফ্লোরের কার্যকারিতা যুক্ত করেছে তা পরীক্ষা করে দেখুন : github.com/isaacg1/pyth/commit/0baf23ec যুক্ত হওয়ার দিন লক্ষ্য করুন, একই দিন এই প্রশ্নটি জিজ্ঞাসা করা হয়েছিল। কারণ এই প্রশ্নটি আমাকে সেই কার্যকারিতা যুক্ত করতে অনুপ্রাণিত করেছিল, এটিকে এই প্রশ্নের ব্যবহারের জন্য অযোগ্য করে তুলেছে।
isaacg

8

ব্রেইনফ ***, 61 বাইট

চীনা , 16 টি অক্ষর

এর জন্য ইনপুটটি ASCII পরিসীমা 1-127-এ থাকা দরকার এবং নাল-সমাপ্ত হয়। এটি স্ট্রিংয়ের শুরু এবং শেষ থেকে এক বা দুটি বর্ণচিহ্ন অবধি অবধি মুছে ফেলা হয়। যদি দুটি থাকে তবে এটি তাদের একসাথে যুক্ত করে, তারপরে 2 টি দিয়ে বিভক্ত হয়, গোল করে নিচে। বাকি চরিত্রটি মুদ্রিত হয়েছে।

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

এই দোভাষীর উপর এটি ব্যবহার করে দেখুন ।

ব্যবচ্ছেদ:

,[>,]         Get the null terminated input
<<<           Move to the second last character
[             While there are at least 3 characters
  [<]>           Move to the first character
  [-]            Delete it
  >[>]<          Move to the last character
  [-]            Delete it
  <<<            Move the the third last character
]
>              Move to the second last character
[              If there are two characters remaining
  [->+<]         Add the two characters together
  >[-[-<+<]>>]   Divide the character by 2 rounding down
  <[>]<[>]<<     Move to before the character to exit the if loop
]
>.             Print the remaining character

* প্রতিটি নির্দেশ 3 টি বিটকে সংকুচিত এবং ইউটিএফ -32 এ এনকোড করা যায়, পুরো প্রোগ্রামটি প্রযুক্তিগতভাবে 6 টি অক্ষরে প্রকাশ করা যেতে পারে।

সম্পাদনা: এবং ড্যানিসের সিজেএম উত্তরের সমতুল্য, আমাকে চীনা ভাষায় পরিচয় করানোর জন্য জান ডভোরাককে ধন্যবাদ

蜐蕈帑聿纂胯箩悚衅鹊颂鹛拮拮氰人

5
Given each instruction could be compressed to 3 bits and encoded in UTF64, the whole program could technically be expressed in 3 characters.তুমি জিতেছ. ইন্টারনেট. এবং অন্য সব।
বিড়াল

1
আমি এটি বৈধ মনে করি না। ব্রেইনফাক সোর্স কোড হ'ল অক্ষরগুলি +-<>,.[] , যাই হোক না কেন এনকোডিংয়ে তাদের বাইনারি উপস্থাপনা নয়। আমাদের conকমত্য রয়েছে যে কোনও এনকোডিং যা বিদ্যমান দোভাষী দ্বারা ব্যবহার করা যায় না তা অবৈধ।
lirtosiast

2
@ থমাসকওয়া, তাই আমি আমার স্কোরটি মূলত আনকোডড বাইটে দিয়েছি। চরিত্রের এনকোডিংটি কেবল এই ধারণায় যোগ দিচ্ছিল যে চরিত্রগুলি দ্বারা স্কোর করা অপব্যবহার করা যেতে পারে।
হ্যান্ড-ই-ফুড

4
@ থমাসকওয়া: ভবিষ্যতের চ্যালেঞ্জের জন্য আমাদের কারো জন্য এমন একটি দোভাষী তৈরি করার সময় এসেছে। কল্পনা করুন যে বিএফ সেরা গল্ফস্ক্রিপ্ট সমাধানটি মারছে! :)
vsz


6

সিজেম, 16 বাইট

q:i_W%.+_,2/=2/c

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

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

q                e# Read all input.
 :i              e# Cast each character to integer.
   _W%           e# Push a reversed copy.
      .+         e# Perform vectorized addition.
        _,2/     e# Get the length, divided by 2.
            =    e# Select the corresponding sum.
             2/c e# Divide by 2 and cast to character.

9
প্রায় কোনও সিজেএম / পাইথ গল্ফ 10-30 অক্ষর কেন অসুবিধা হ'ল না কেন? ওও
জেরেজেস

1
অসুবিধা কোথায়? এটি একটি সাধারণ মধ্যম গণনা, বাছাইয়ের বিয়োগ
ডেনিস

4
@ ডেনিস আমি মনে করি এটাই তার অর্থ। এটি সহজ এবং শক্ত উভয় প্রশ্নের জন্য একই দৈর্ঘ্য হতে পারে।
জিওকাভেল

পছন্দ করেছেন 10-30 সহজ সমস্যার জন্য আদর্শ। এটি আরও জটিল কিছু কীভাবে সন্ধান করে তার উদাহরণ চাইলে এটি দেখুন: কোডগল্ফ.স্ট্যাকেক্সেঞ্জাও.এ / 64086/32852
রেটো কোরাাদি

6

টিস্ক্রিপ্ট , 23 বাইট 25 30 31 33

²(x[t=xn/2]c+xv[t]c)/2)

স্ট্রিংটি বিপরীত করার জন্য @ isaacg এর ধারণা ব্যবহার করে।

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

সমস্ত মামলার পরীক্ষা করুন

অবহেলিত ও & ব্যাখ্যা

টিস্ক্রিপ্ট এখনও জাভাস্ক্রিপ্ট তাই এটি জাভাস্ক্রিপ্টের মতোও অনেকটা কার্যকর হয়।

C((x[t=xn/2]c+xv[t]c)/2)

C((           // Char code to char
   x[t=xn/2]c // Floored center
   +          // Add to
   xv[t]c     // Ceil'd center
  ) / 2)      // Divide by 2


10
সেই শিরোনামটি র‌্যাড। আমি প্রতিটি godদ্ধ ভাষার জন্য সেই শিরোনামটি চাই।
বিড়াল

হ্যাঁ, কর্নিং বাদে।
বিড়াল

@ সিসেরিক এলওএল, এটির একটি বিষয় ছিল যা আমি স্থির করে ফন্ট ব্যবহার করছি।
ডাউনওয়েট


5

মতলব, 39 37 বাইট

floor((end+[1,2])/2) দৈর্ঘ্যটি সমান হলে স্ট্রিংয়ের মাঝের দুটি সূচকগুলি প্রদান করে এবং দৈর্ঘ্যটি বিজোড় হলে মাঝারি সূচকে দুবার প্রদান করে।

meanকেবলমাত্র সেই মানগুলির গড়টি ফিরিয়ে দেয় এবং charস্বয়ংক্রিয়ভাবে এটি মেঝে করে।

@(s)char(mean(s(floor(end/2+[.5,1]))))

5

8086 মেশিন কোড + ডস, 31 বাইট

Hexdump:

BA 1E 01 B4 0A CD 21 8B F2 46 8A 1C D0 EB 8A 50
01 72 06 74 08 02 10 D0 EA B4 02 CD 21 C3 FF

সমাবেশের উত্স কোড (তাস দিয়ে একত্রিত হতে পারে):

    .MODEL TINY

    .CODE
    org 100h

    MAIN PROC

    mov dx, offset buf
    mov ah, 10      ; DOS function "read string"
    int 21h

    mov si, dx
    inc si          ; si now points to the length of the string
    mov bl, [si]    ; 
    shr bl, 1       ; divide the length by 2
    mov dl, [si+bx+1] ; load the middle char
    jc calc_done    ; if length was odd - done
    jz output_done  ; if length was zero - exit
    add dl, [si+bx] ; add the other middle char
    shr dl, 1       ; divide by 2
calc_done:
    mov ah, 2       ; DOS function "output char"
    int 21h
output_done:
    ret

buf db 255          ; maximum bytes to input

    MAIN ENDP
    END MAIN

এখানে FLAGS নিবন্ধের কিছু সূক্ষ্ম ব্যবহার রয়েছে। এটি স্ট্রিংয়ের দৈর্ঘ্যটি 1 বিট দ্বারা ডান স্থানান্তরিত করার পরে (যা 2 দ্বারা বিভাগের সমান), দুটি পতাকা অতিরিক্ত তথ্য সঞ্চয় করে:

  • পতাকা বহন করুন: এতে বিট রয়েছে যা স্থানান্তরিত হয়েছিল। বিটটি যদি 1 হয় তবে দৈর্ঘ্যটি বিজোড় ছিল।
  • শূন্য পতাকা: ফলাফলটি শূন্য কিনা তা দেখায়। যদি বহনকারী পতাকা 0 হয় এবং শূন্য পতাকা 1 হয়, দৈর্ঘ্য শূন্য ছিল এবং কোনও কিছুই মুদ্রণ করা উচিত নয়।

সাধারণত, পতাকাগুলি তাত্ক্ষণিকভাবে পরীক্ষা করা উচিত, তবে এখানে আমি এই সত্যটি ব্যবহার করি যে movনির্দেশাবলী পতাকাগুলি পরিবর্তন করে না। সুতরাং মাঝারি চরটি লোড করার পরে সেগুলি পরীক্ষা করা যেতে পারে।


4

পাইথন 3, 61 59 57 55 বাইট

আমি যে ভাষাগুলিতে কাজ করি সেগুলি নিয়ে গল্ফ না দেওয়ার চেষ্টা করি, তবে এটি খুব খারাপ নয়।

@ এসএসটকে 2 বাইটের জন্য ধন্যবাদ!

lambda x:chr((ord(x[len(x)//2])+ord(x[~len(x)//2]))//2)

পুরো প্রোগ্রামটি 59 বাইট:

x=input()
l=len(x)//2
print(chr((ord(x[l])+ord(x[~l]))//2))

এখানে চেষ্টা করুন


আহ, আমার পরবর্তী কাজটি কী হতে চলেছে তা আপনি আমাকে মারলেন (শেভ করার জন্য আমি যদি 10 বাইট না পেয়ে থাকি)
বিড়াল

না, না, আমার 166 বাইট গো দ্রবণটি শেভ করতে 10 বাইট আপনার তবে আরও মার্জিত।
বিড়াল

@ সিসেরেক আহ, আমি ভুল বুঝেছি। এবং ধন্যবাদ.
lirtosiast

-1-len(x)//2~len(x)//2কিভাবে তল বিভাগ নেতিবাচক পূর্ণসংখ্যার উপর কাজ করে তার সমতুল্য ।
xsot

@ এক্সসোট ধন্যবাদ — যদিও কোডটি আরও কিছুটা খারাপ করে তোলে :)
lirtosiast

4

প্রোলোগ, 111 বাইট

কোড

p(X):-atom_codes(X,L),length(L,N),I is N//2,J is(N-1)//2,nth0(I,L,A),nth0(J,L,B),Q is(A+B)//2,writef('%n',[Q]).

ব্যাখ্যা

p(X):-atom_codes(X,L),       % Convert to list of charcodes
      length(L,N),           % Get length of list
      I is N//2,             % Get mid index of list
      J is(N-1)//2,          % Get 2nd mid index of list if even length
      nth0(I,L,A),           % Get element at mid index
      nth0(J,L,B),           % Get element at 2nd mid index
      Q is(A+B)//2,          % Get average of elements at mid indices
      writef('%n',[Q]).      % Print as character

উদাহরণ

>p('Hello').
l

>p('Hiya').
q

4

আর , 73 বাইট

function(x,y=utf8ToInt(x),n=sum(1|y))if(n)intToUtf8(mean(y[n/2+c(1,.5)]))

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

এই পুনরাবৃত্তিমূলক ধারণাটি সামনে আসার জন্য @ এনজিএমকে অনেক ধন্যবাদ - 20 বাইট গল্ফ দেওয়ার অনুমতি দেওয়া হয়েছে।

পুরানো সমাধান:

আর , 101 95 বাইট

"!"=function(x,n=sum(1|x))"if"(n<3,mean(x),!x[-c(1,n)])
try(intToUtf8(!utf8ToInt(scan(,""))),T)

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

পুনরাবৃত্তির সমাধান। 2 টি বাইটের দামে একটি সমস্যা সংশোধন করা হয়েছে:

  • try(expr, silent = TRUE)ইনপুট খালি আছে কেসটি সঠিকভাবে পরিচালনা করতে যুক্ত করা হয়েছে ।

গিয়াস্পিকে 4 বাইটের জন্য ধন্যবাদ!


intToUtf8অ-পূর্ণসংখ্যা কাটা হয় না ?
জিউসেপ

@ জিউস্পেপ আপনি বরাবরের মতোই ঠিক বলেছেন :)
জয়সি

92 বাইটগুলি পুনরাবৃত্তির সমাধান নয়।
এনজিএম

৮২ বাইটের পরিবর্তে আপনি এটিকে পৃথক উত্তর হিসাবে পোস্ট করবেন - এটি আমার উত্তর থেকে সম্পূর্ণ আলাদা!
জেসি

ঠিক আছে, আপনি যদি আসল প্রচেষ্টা না করে থাকেন তবে আমি এটিকে সামনে আনতে পারতাম না And একগুচ্ছ কৌশল নিয়ে আমরা আর মানুষ উঠে এসেছি। এবং তারপরে আপনি এটিকে আরও খাটো করে রেখেছেন। সুতরাং এগিয়ে যান এবং একটি স্পষ্ট বিবেক দিয়ে সম্পাদনা করুন!
এনজিএম

4

হুশ , 11 বাইট

c½S¤+öc→←½↔

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

ব্যাখ্যা

নিচে সুস্বাদু, সুস্বাদু সংযুক্তকারী। ö"এই চারটি ফাংশনটি রচনা করুন", ¤এটি "দ্বিতীয় যুক্তি পৃথকভাবে দুটি অতিরিক্ত যুক্তি প্রয়োগের ফলাফলের জন্য প্রথম যুক্তি প্রয়োগ করুন", S"এই ফাংশনটি প্রয়োগ করুন (যা দুটি আর্গুমেন্ট গ্রহণ করা উচিত) Sএর তৃতীয় তর্ক এবং ফলাফলের জন্য Sএর তৃতীয়টিতে দ্বিতীয় তর্কটি প্রয়োগ করার "। অতএব,

   Function       Type                Semantics
     öc→←½        [TChar]->TInt       ASCII code of middle (floored) char in string
   ¤+öc→←½        [TC]->[TC]->TI      Sum of ASCII codes of middle of two strings
  S¤+öc→←½↔       [TC]->TI            Sum of ASCII codes of the middle of a string and its reverse
c½S¤+öc→←½↔       [TC]->TC            ASCII character represented by half the above, QEF

যুক্ত করতে সম্পাদিত: কড়া কথা বলতে গেলে, সমস্যাটির নির্দিষ্টকরণের সাথে সামঞ্জস্য করতে এটি কিছুটা ব্যর্থ হয়, যা খালি ইনপুট এবং অন্যান্য ক্ষেত্রে একটি চরিত্রের ক্ষেত্রে একটি স্ট্রিংয়ের অনুরোধ করে।

হুসের কঠোর টাইপিংয়ের কারণে, কোনও ফাংশন / প্রোগ্রাম সংজ্ঞায়িত করা সম্ভব নয় যা দুটি প্রকারের মধ্যেই ফিরে আসতে পারে। আমি সব ক্ষেত্রেই একটি একক চরিত্রকে ফিরিয়ে দেওয়া পছন্দ করেছি, এবং হুসের পক্ষে, একটি একক চরিত্রের খালি স্ট্রিং উপস্থাপনের জন্য সবচেয়ে যুক্তিসঙ্গত পছন্দ '(space)'কারণ এটি "ডিফল্ট" মান (এবং প্রকৃতপক্ষে, তাই এই প্রোগ্রামটি এটি ফেরত দেয়; ডিফল্ট) সর্বশেষ গ্রহণের সময় মান ব্যবহার করা হয় ( খালি তালিকার ) আইটেমটি ।

আমি শূন্য বা একটি বর্ণের স্ট্রিংগুলি যুক্ত করতে যথাযথভাবে বেছে নিতে পারি, যা অন্য দিকের স্পেসিফিকেশনকে ব্যর্থ করবে, তবে আমি এটি চারটি বাইট যুক্ত করার কারণে করিনি :, অক্ষরটিকে একটি-চরিত্রের স্ট্রিংয়ে রূপান্তর করার Ṡ&ö;c½S¤+öc→←½↔সাথে ;, অন্যটিö স্পষ্টভাবে প্রয়োজনীয় রচনা করতে এবং Ṡ&মিথ্যা ইনপুট ক্ষেত্রে একটি শর্টকাট।


3

সি ++ 14, 56 বাইট

[](auto s){int l=s.size();return(s[(l-1)/2]+s[l/2])/2;};

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

অবহেলিত, ব্যবহার সহ

#include <string>
int main()
{
    auto lmbd = [](auto str)
    {
        int len = str.size();
        return (str[(len - 1) / 2] + str[len / 2]) / 2;
    };

    std::cout << (char) lmbd("Hiya"s) << std::endl; // outputs q
}

@ CᴏɴᴏʀO'Bʀɪᴇɴ সম্পন্ন হয়েছে।
জেরেজেস

আমি মনে করি না আপনি অক্ষর কোড দিয়ে আউটপুট দিতে পারবেন, এবং আমিও মনে করি না যে আপনি 0"" এর জন্যও আউটপুট দিতে পারেন ।
lirtosiast

আপাত নিয়ম থাকলে ভাল লাগবে।
জেরেজেস


3

জাভাস্ক্রিপ্ট (ES6), 83 বাইট 89 89

@ সি ও ওবি'কে 2 বাইট সংরক্ষণ করা হয়েছে ʀɪᴇɴ

@ বুদ্ধিমানের জন্য 6 টি বাইট সংরক্ষণ করা হয়েছে

s=>String.fromCharCode((s[~~(t=s.length/2-.5)][q='charCodeAt']()+s[0|t+.9][q]())/2)

এই সমস্ত স্ট্রিং চর কোডটিতে জাভাস্ক্রিপ্ট খুব ভাল নয়।


তুমি আমাকে এটা দ্বারা মেরেছ. ওহ ভাল, কমপক্ষে আমি আপনাকে সাহায্য করতে পারি;) s=>String.fromCharCode((s[~~(t=s.length/2-.5)][r="charCodeAt"]()+s[Math.ceil(t)][r])/2)হ'ল 5 বাইট কম।
কনর ও'ব্রায়েন

@ CᴏɴᴏʀO'Bʀɪᴇɴ মিষ্টি। আমার ()চারপাশের দরকার charCodeAtতাই এটি 3 টি অক্ষর, তবে যাইহোক ধন্যবাদ!
ডাউনওয়েট

@ ɟ nɟuɐɯɹɐ ן oɯ যদি tকোনও পূর্ণসংখ্যার কাজ করে না তবে
ডাউনওয়েট

Math.ceil(t)পরিবর্তন করা যাবে0|t+.9
ETHproductions

@ এইচটি প্রডাকশন ধন্যবাদ, এটি 6 বাইট সংরক্ষণ করেছে!
ডাউনওয়েট

3

, 44 34 বাইট

ক্রস আউট 44 এখনও নিয়মিত 44 :(

ise.eJ;2/m[(\($L;dJ{#\#+2/c}L;?o];

বাইটগুলি নষ্ট করা:

  • ইনপুটটির দৈর্ঘ্য সমান / বিজোড় কিনা তা পরীক্ষা করা হচ্ছে
  • মাঝের চরিত্রটি পাওয়া

7
আমি নিশ্চিত যে আপনি এটি বলার জন্য একটি অদৃশ্য সংস্করণ পোস্ট করেছেন;)
কনর ও'ব্রায়েন

4
@ CᴏɴᴏʀO'Bʀɪᴇɴ আমি সবে ভাগ্যবান পেয়েছি: ডি
পর্যায়

2

মিনকোলাং 0.13 , 23 20 বাইট

$oI2$%d$z,-Xz3&+2:O.

এখানে চেষ্টা করুন।

ব্যাখ্যা

$o        Read in the whole stack as characters
I2$%      Push I,2, then pop them and push I//2,I%2
d$z       Duplicate top of stack (I%2) and store in register (z)
,-X       <not> the top of stack, subtract, and dump that many off the top of stack
z3&       Retrieve value from register and jump 3 spaces if this is not zero
   +2:    Add and then divide by 2
O.        Output as character and stop.

1
hiyaএর iপরিবর্তে ফিরে আসেq
ডাউনগোট

@ ভিɪʜᴀɴ: ওএইচ। আমি এটি ভুল লিখেছি। আমি ভেবেছিলাম যে প্রশ্নটি মাঝখানে চরিত্রটির জন্য জিজ্ঞাসা করছে, দৈর্ঘ্য সমান হলে ফ্লোরড গড় অবস্থানে যাচ্ছিল।
এল'েন্ডিয়া স্টারম্যান

@ থমাসকওয়া: স্থির।
এল'ইনিয়া স্টারম্যান

@ ভিɪʜᴀɴ: ed স্থির।
এল'েন্ডিয়া স্টারম্যান

2

জাপট , 40 29 23 21 20 বাইট

@ ן nɟuɐɯɹɐ ן oɯ এর জন্য 4 টি বাইট সংরক্ষণ করা হয়েছে ɯ

এখন মূল দৈর্ঘ্য মাত্র অর্ধেক! আমি কোড গল্ফ পছন্দ করি। :-D

UcV=K*Ul)+Uw cV)/2 d

খালি স্ট্রিংয়ে সঠিকভাবে কাজ করে। এটি অনলাইন চেষ্টা করুন!

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

          // Implicit: U = input string, K = 0.5
Uc        // Take the char-code at position
 V=K*Ul   //  V = 0.5 * length of U
+         //  (auto-floored), plus
Uw cV     //  the char-code at position V (auto-floored) in the reversed string,
/2 d      //  divide by 2, and turn back into a character (auto-floored).
          // Implicit: output last expression

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


বিপরীত জিনিস উজ্জ্বল +1
ডাউনওয়েট

তুমি কি করতে পার না V=Ul /2;((UcV +Uw cV )/2 d?
মামা ফান রোল

@ ɟ nɟuɐɯɹɐ ן oɯ আচ্ছা, দুহ: পি আমি cবহুবার যুক্তি ছাড়াই ব্যবহার করেছি যে আমি ভুলে গিয়েছি এটি একটি গ্রহণ করেছে। ধন্যবাদ!
ETH প্রোডাকশনগুলি

2

যান, 166 156 153 বাইট

গল্ফ করার পক্ষে গো ভাষা সেরা ভাষা নাও হতে পারে ... তবে আমি এটি এত ভালবাসি, এবং আমি এটি শিখছি, তাই সেখানে।

এই প্রয়োগটি ফাঁকা ( \n) ইনপুট গ্রহণ করে এবং সম্ভবত অ-এএসসিআইআই / এএসসিআইআই-বর্ধিত ইনপুটটি ভেঙ্গে যাবে।তবে ওপি ইনপুট / আউটপুট এনকোডিং নির্দিষ্ট করে নি এইভাবে ASCII হ'ল আমি স্পষ্টভাবে সমর্থন করেছি।

সম্পাদনা : দেখা যাচ্ছে if/ else তার চেয়ে ছোট switch। এখন আমি জানি, আমি মনে করি।

Golfed:

package main;import ."fmt";func main(){a:="";_,_=Scanln(&a);if b:=len(a);b>0{x:=b/2;if b%2==0{Printf("%c",(a[x]+a[x+1])/2)}else{Println(string(a[x]))}}}

Ungolfed:

package main # everything in go is a package.

import . "fmt" # the dot allows for absolute package method references 
# (think "from string import *" in python)

func main() {
    a := ""
    _, _ = Scanln(&a) # a pointer to a
    if b := len(a); b > 0 { # if statements allow local assignment statements
        x := b / 2
        if b%2 == 0 { # modulo 2 is the easiest way to test evenness
#in which case, average the charcodes and print the result
            Printf("%c", (a[x]+a[x+1])/2)
        } else {
# else just find the middle character (no rounding needed; integer division in Go always results in an integer)
            Println(string(a[x]))
        }
    }
}

2

23, 23 টি অক্ষর

a=ïꝈ/2,ϚĎ((ïüa+ᴙïüa)/2)

Try it here (Firefox only).

ধারণাটির জন্য @ ইথ প্রডাকশনগুলিকে ধন্যবাদ!


2
ভাগ্যবান, বাইটের পরিবর্তে
অক্ষরে

ওহে ইয়ে! আমরা সবাই বাঁধা।
মামা ফান রোল

যে এটিকে হ্রাস করেছে, আমি দয়া করে একটি ব্যাখ্যা পেতে পারি?
মামা ফান রোল

2

সি #, 77 বাইট

s=>{int n=s.Length;return n<1?' ':(char)(n%2>0?s[n/2]:(s[n/2-1]+s[n/2])/2);};

এটি আসলে কোনও স্ট্রিং ফিরিয়ে দেয় না এবং ইনপুট স্ট্রিং ফাঁকা থাকলে আপনি একটি স্পেস অক্ষর পাবেন কারণ ফাংশনটি অবশ্যই সর্বদা একটি মান ফেরত দেয়। একটি স্ট্রিং ফেরত দিতে আরও 2 বাইট লাগবে।

পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

using System;

namespace FindTheCenter
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<string,char>f= s=>{int n=s.Length;return n<1?' ':(char)(n%2>0?s[n/2]:(s[n/2-1]+s[n/2])/2);};   //77 bytes
            Console.WriteLine(f(""));
            Console.WriteLine(f("Hello"));
            Console.WriteLine(f("Hiya"));
        }
    }
}

বিকল্পভাবে, একটি সম্পূর্ণ প্রোগ্রাম যা ব্যবহারকারীদের ইনপুট পড়ে এবং প্রবেশ করা স্ট্রিংয়ের কেন্দ্রটি মুদ্রণ করে:

সি #, 144 বাইট

using C=System.Console;class P{static void Main(){var s=C.ReadLine();int n=s.Length;C.Write(n<1?' ':(char)(n%2>0?s[n/2]:(s[n/2-1]+s[n/2])/2));}}

আবার এটি কোনও স্পেস ক্যারেক্টার মুদ্রণের একই কৌশল ব্যবহার করে, যা ব্যবহারকারী খেয়াল করবে না, এবং খালি স্ট্রিং নয়, অন্যথায় সমাধানটি 2 বাইট দীর্ঘতর।


2

ভিম, 38 24 23 কীস্ট্রোক

যেহেতু মাঝের চরটি নয় মিডল লাইনটি খুঁজে পেতে ভিমের একটি বিল্ট ইন ফাংশন রয়েছে , তাই আমরা প্রতিটি অক্ষর প্রথমে পৃথক রেখায় বিভক্ত করি, মাঝের রেখাটি খুঁজে পাই , তারপরে এবং তার আগে সমস্ত কিছু মুছি।substitute

:s/\./\0\r/g<cr>ddMjdGkdgg

আপনি যদি এটি চালাতে চান তবে .vimrcফাইলগুলি থেকে সাবধান থাকুন যা .(ম্যাজিক রেজেক্স) এবং এর আচরণ পরিবর্তন করতে পারেg (জিডিএফল্ট) । মনে রাখবেন এটি আমার মেশিনে আসলে আমাকে 3 টি কীস্ট্রোক সংরক্ষণ করে :)

পূর্ববর্তী উত্তর

:exe 'norm '.(virtcol('$')/2).'|d^ld$'

ইনপুট হিসাবে একটি লাইন বাফার নেয়, মাঝের চরিত্রের সাথে বর্তমান বাফার আপডেট করে। ভেবেছিলাম ভিমের জন্য এর জন্য একটি শর্টকাট হত!

দ্রষ্টব্য: একটি সংক্ষিপ্ততর সংক্ষিপ্ত সমাধানের ফলে অসীম লুপ দেখা দেয় ... কারও যদি ধারণা থাকে: qq^x$x@qq@qp(12 টি কীস্ট্রোক) - এটি <c-c>শেষের পরে কাজ করে @q...


1

গণিত, 118 99 টি চর

Floor
If[#=="","",FromCharacterCode[%@Mean@#[[Ceiling[l=Length@#/2];;%[l+1]]]&@ToCharacterCode@#]]&

এমএমএ অক্ষর কোড ম্যানিপুলেশন মূল্যবান ...


এই ফাংশনটি কেবল একবারে কাজ করে, আপনি যতবারই এই কোডটি কল করতে চান না যতক্ষণ না পুরো কোডটি পুনরাবৃত্তি করে। ফাংশন জমা দেওয়ার বিষয়টি তাদের পুনরায় ব্যবহারযোগ্য হওয়ার জন্য । আপনার ফাংশনটি কল করা বিশ্বব্যাপী এর মান ভেঙে দেয় %যা এটি নির্ভর করে।
মার্টিন এন্ডার

1
মেঝে এবং সিলিংয়ের সংক্ষিপ্ত রূপগুলি কেন ব্যবহার করবেন না?
ডেভিডসি

1

ভিবিএ, 130 বাইট

Function a(q)
h=Len(q):a=Mid(q,(h)/2,2)
If h Mod 2=0 Then:a=Chr((Asc(Left(a,1))+Asc(Right(a,1)))\2):Else:a=Right(a,1)
End Function

মধ্য 2 অক্ষরের সন্ধান করে।
অক্ষরের সংখ্যা যদি বিজোড় হয় তবে মধ্যের 2 এর ডানটি পান যা আমরা গোল হয়ে যাওয়ার সাথে সাথে আসল মাঝারি হবে। 2 দ্বারা বিভক্ত 2 টি অক্ষরের
ASCII asc()মানগুলি যোগ না করে এবং ASCII অক্ষরটি ফেরত দিনchr() সেই মানটির উপর ভিত্তি করে ।

আমি মনে করি আমি asc()কলগুলির মধ্যে একটিতে গল্ফ সরিয়ে ফেলতে পারি , তবে এটির কাজটি আরও কম করা যায় না।




1

pb , 83 বাইট

^<b[1]>>>w[B!0]{<w[B!0]{t[B]<b[T]>>}<b[0]<b[0]<[X]>>}w[B=0]{<}t[B]<[X]t[B+T]vb[T/2]

ইনপুট স্ট্রিংয়ে কমপক্ষে 3 টি অক্ষর থাকা অবস্থায় প্রথম এবং শেষটি সরানো হবে। এটি হয় 1 টি অক্ষর (মোছাবিহীন মুদ্রিত হওয়া উচিত) বা 2 (গড় এবং মুদ্রিত হওয়া উচিত)। এটি পরিচালনা করতে, স্ট্রিংয়ের প্রথম এবং শেষ অক্ষরগুলি একসাথে যুক্ত হয় এবং দুটি দ্বারা বিভক্ত হয়। যদি কেবল একটি চরিত্র ছিল (a+a)/2==a,। দু'জন থাকলে,(a+b)/2 মুদ্রণ করা দরকার যে চরিত্রটি। পিবি পাইথনের অভিব্যক্তি মূল্যায়ন "ধার করে" ( def expression(e): return eval(e, globals())) তাই এটি স্বয়ংক্রিয়ভাবে মেঝে।

খালি ইনপুট পরিচালনা করতে আমার 5 বাইট খরচ হয়। বিশেষত, <b[1]>প্রথম লাইনে। এর আগে, যখন আমি "স্ট্রিং" বলেছিলাম, এটি মোট মিথ্যা ছিল। pb এর স্ট্রিং নেই, এতে এমন অক্ষর রয়েছে যা একে অপরের সাথে ঘনিষ্ঠ হয়। "একটি স্ট্রিংয়ের শেষ চরিত্র" সন্ধান করা মানে ব্রাশটি কোনও অক্ষর না হারা পর্যন্ত বাম দিকে সরানো। যখন কোনও ইনপুট সরবরাহ করা হয় না, "কমপক্ষে 3 টি অক্ষর থাকা অবস্থায়" লুপটি সম্পূর্ণ এড়িয়ে যায় এবং এটি শেষ অক্ষরের সন্ধান শুরু করে starts তা ছাড়া <b[1]>চিরকাল তা দেখতে থাকত keep এই কোডটি 1-এর মান (-1, -1) এর সাথে একটি অক্ষর রাখে বিশেষত যখন ইনপুট খালি থাকে তখন সন্ধান করা যায়। স্ট্রিংয়ের "শেষ চরিত্রটি" সন্ধানের পরে ব্রাশটি ধরে নিয়েছে যে এটি প্রথমটি (0, -1) এ আছে এবং সেখানে সরাসরি চলে যায়, 0 এর মান খুঁজে পাওয়া যায় (1+0)/20 পিবিতে,

কিন্তু মনোরেল, এটি এখনও মুদ্রণ! চ্যালেঞ্জ স্পেসিফিকেশন বলে(empty input) => (empty output) ! একটি নাল চরিত্র প্রিন্টিং প্রতারণা করছে না? এছাড়াও, এটি সম্পর্কিত নয়, তবে আপনি স্মার্ট এবং সুদর্শন।

ধন্যবাদ, অনুমানমূলক প্রশ্নকর্তা। এর আগে, যখন আমি "মুদ্রণ" বলেছিলাম, এটি মোট মিথ্যা ছিল। পিবিতে, আপনি সত্যিই মানগুলি মুদ্রণ করেন না, আপনি কেবল সেগুলি ক্যানভাসে রেখেছেন। "আউটপুট করার উপায়" এর পরিবর্তে, ক্যানভাসকে অসীম বড় 2D অ্যারে হিসাবে কল্পনা করা আরও সঠিক। এটি উভয় মাত্রায় নেতিবাচক সূচকগুলিকে মঞ্জুরি দেয় এবং pb তে প্রচুর প্রোগ্রামিং করা আপনি যে ক্যানভাসে চান তা ব্রাশটি সেই অবস্থানটিতে পৌঁছেছে তা নিশ্চিত করার বিষয়ে। যখন প্রোগ্রামটি সম্পাদন শেষ করে, অ-নেতিবাচক এক্স এবং ওয়াই সমন্বয়যুক্ত ক্যানভাসের যে কোনও কিছুই কনসোলের উপযুক্ত স্থানে প্রিন্ট করা হয়। যখন প্রোগ্রামটি শুরু হয়, পুরো ক্যানভাসটি 0 এর মান দিয়ে পূর্ণ হয় an যাতে প্রতিটি অসীম সংখ্যক লাইন মুদ্রণ করতে না হয়, প্রতিটি অনন্ত সংখ্যার নাল বাইট সহ, আউটপুট প্রতিটি লাইন কেবল সর্বশেষ ননজারো অক্ষর পর্যন্ত মুদ্রিত হয় এবং লাইনগুলি কেবল কোনও ননজারো চরিত্রের সাথে শেষ এক পর্যন্ত মুদ্রিত হয়। সুতরাং একটি রাখা0 at (0, 0) এখনও একটি খালি আউটপুট।

Ungolfed:

^<b[1]>                # Prevent an infinite loop on empty input

>>w[B!0]{              # While there are at least 3 chars of input:

    <w[B!0]{              # Starting at the second character:
            t[B]<b[T]>>         # Copy all characters one position to the left
                                # (Effectively erasing the first character)
    }

    <b[0]<b[0]            # Delete both copies of the last character

    <[X]>>                # Get in place to restart loop
}

w[B=0]{<}                 # Go to last character of remaining string
t[B]<[X]t[B+T]            # Find it plus the first character
vb[T/2]                   # Divide by 2 and print

1

গম্ভীরভাবে , 22 20 বাইট

,O3 >WXXaXa3 >WXkæ≈c

আপনার ভাষায় দুর্দান্ত হওয়ার জন্য @ মেগো ধন্যবাদ

এটি অনলাইনে বা যাই হোক না কেন চেষ্টা করুন


1
এটি খালি ইনপুট জন্য ব্যর্থ। আমার একটি মুছে ফেলা 20-বাইট সমাধান রয়েছে যা আমি খালি ইনপুটটির জন্যও ঠিক করার চেষ্টা করছি।
lirtosiast

,;``@(lIƒস্ট্যাকের ইনপুট মানটি যদি len> 0 হয় তবে আপনাকে ছেড়ে দেবে বা অন্যথায় প্রোগ্রামটি বন্ধ করবে। নোট করুন যে ব্যাকটিক্সগুলিতে একটি অপ্রচলিত - অক্ষর 127.
মেগো

@ মেগো এটি কাজ করছে বলে মনে হচ্ছে না।
পর্যায়

@ ফেজ আপনি ইনপুট জন্য স্ট্রিট উদ্ধৃত করতে হবে। এটি কাজ করে।
মেগো

@ মেগো কি করার ƒকথা?
পর্যায়

1

কফিস্ক্রিপ্ট, 104 103 বাইট

f=(x)->((y=x.length)%2&&x[y//2]||y&&String.fromCharCode (x[y/=2][z='charCodeAt']()+x[y-1][z] 0)//2)||''

1

রুবি, 43 42 41 বাইট

->a{s=a.size;puts s<1?'':s%2<1??q:a[s/2]}

42 বাইট

->a{s=a.size;puts s==0?'':s%2<1??q:a[s/2]}

43 বাইট

->a{s=a.size;puts s==0?'':s%2<1?'q':a[s/2]}

ব্যবহার:

->a{s=a.size;puts s<1?'':s%2<1??q:a[s/2]}['12345']
=> 3

1

জাভা 7, 152 বাইট

String c(String s){char[]a=s.toCharArray();int l=a.length,x,y;return l<2?s:""+(l%2>0?a[l/2]:(char)((x=a[l/2])>(y=a[(l/2)-1])?y+((x-y)/2):x+((y-x)/2)));}

অবহেলিত ও পরীক্ষার কেস:

এখানে চেষ্টা করুন।

class M{
  static String c(String s){
    char[] a = s.toCharArray();
    int l = a.length,
            x,
            y;
    return l < 2
            ? s
            : "" + (l%2 > 0
                     ? a[l/2]
                     : (char)((x = a[l/2]) > (y = a[(l/2)-1])
                                ? y + ((x-y)/2)
                                : x + ((y-x)/2)));
  }

  public static void main(String[] a){
    System.out.println(c("12345"));
    System.out.println(c("Hello"));
    System.out.println(c("Hiya"));
    System.out.println(c(""));
    System.out.println(c("x")); // Additional test case that will fail on some other answers
  }
}

আউটপুট:

3
l
q
(empty output)
x

1

পিএইচপি, 147 93 বাইট

আমার উত্তর 54 বাইট ডাউন গল্ফ করার জন্য ক্রেডিট এবং জার্গ হালসারম্যানকে বিশেষ ধন্যবাদ !

<?=($l=strlen($s=$argv[1]))%2?$s[($l-1)/2]:chr(floor((ord($s‌​[$l/2])+ord($s[$l/2-‌​1]))/2));

পূর্ববর্তী সংস্করণ:

$s=$argv[1];$l=strlen($s);echo($l%2!=0?substr($s,$n=($l-1)/2,-$n):chr(floor(abs((ord($x=substr($s,$l/2-1,1))-ord(substr($s,$l/2,1)))/2))+ord($x)));

পরীক্ষার কোড:

$argv[1] = 'Hiya';
$s=$argv[1];
$l=strlen($s);
echo($l%2!=0?substr($s,$n=($l-1)/2,-$n):chr(floor(abs((ord($x=substr($s,$l/2-1,1))-ord(substr($s,$l/2,1)))/2))+ord($x))); 

অনলাইন পরীক্ষা

আমার অনুভূতি আছে যে এটি উন্নত করা যেতে পারে তবে এটির জন্য পর্যাপ্ত সময় নেই ...


<?=($l=strlen($s=$argv[1]))%2?$s[($l-1)/2]:chr(floor((ord($s[$l/2])+ord($s[$l/2-1]))/2));আমার প্রস্তাব
J:10rg Hülsermann

@ জার্গএলসারম্যান ব্রিলিয়ান্ট গল্ফিং! আপনার নিজের উত্তর হিসাবে এটি পোস্ট করা উচিত। আমার যদি সময় থাকে তবে আমি আপনার সুন্দর সমাধানগুলি দিয়ে আমার উত্তরটি আরও গল্ফ করব। ধন্যবাদ।
মারিও

এটিকে আপনার উত্তর হিসাবে নির্দ্বিধায় নিন
Jörg Hülsermann

1

এক্সেল, 122 79 বাইট

আসলে @ সোফিয়া ল্যাঙ্কনারের উত্তর এখন:

=IFERROR(CHAR(CODE(MID(A8,LEN(A8)/2+.5,1))/2+CODE(MID(A8,LEN(A8)/2+1,1))/2),"")

প্রাথমিক সমাধান থেকে টেলর স্কট -5 বাইট।

=IFERROR(IF(ISODD(LEN(A1)),MID(A1,LEN(A1)/2+1,1),CHAR((CODE(MID(A1,LEN(A1)/2,1))+CODE(MID(A1,LEN(A1)/2+1,1)))/2)),"")

খালি স্ট্রিংয়ের জন্য 12 বাইট দরকার।


ড্রপ Average(...,...)এবং (...+...)/2-5 বাইট জন্য ব্যবহার করুন । =IFERROR(IF(ISODD(LEN(A1)),MID(A1,LEN(A1)/2+1,1),CHAR((CODE(MID(A1,LEN(A1)/2,1))+CODE(MID(A1,LEN(A1)/2+1,1)))/2)),"")
টেলর স্কট

এক্সেল এমআইডি-তে একটি অ-পূর্ণসংখ্যার দ্বিতীয় যুক্তি গ্রহণ করবে (এবং তল), সুতরাং আপনাকে এটি কেস হিসাবে বিভক্ত করতে হবে না=IFERROR(CHAR(CODE(MID(A1,LEN(A1)/2+1,1))/2+CODE(MID(A1,LEN(A1)/2+.5,1))/2),"")
by৯
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.