এই স্ট্রিং Depalindromize!


48

এই চ্যালেঞ্জ অনুযায়ী উত্পন্ন প্যালিনড্রোম দেওয়া হয়েছে , এটিকে হ্রাস করুন।

পরীক্ষার মামলা

abcdedcba -> abcde
johncenanecnhoj -> johncena
ppapapp -> ppap
codegolflogedoc -> codegolf

যেহেতু এটি Depalindromizing সম্পর্কিত, আপনার কোডটি প্যালিনড্রোম হতে পারে না

মনে রাখবেন, এটি , তাই সবচেয়ে কম বাইটের কোডটি জয়ী।


23
আপনার কোডটি প্যালিনড্রোম না হয়ে অর্থহীন সীমাবদ্ধতার জন্য -1। এটি আইএমওকে চ্যালেঞ্জের সাথে কিছুই যোগ করে না, খুব কম ভাষায়ই এটি গুরুত্বপূর্ণ।
আর

25
সীমাবদ্ধতার জন্য +1। এটি এতটা প্যালিয়োনড্রোম চ্যালেঞ্জের প্রতিবিম্ব করছে ... এবং এটি এসওল্যাংগুলিতে চ্যালেঞ্জ যুক্ত করছে। আমি এটা পছন্দ করি. আমি কি এই ধারণায় সঠিক যে ইনপুটটির সর্বদা অসম দৈর্ঘ্য থাকবে?
তিতাস

42
নন-প্যালিনড্রোম সীমাবদ্ধতা সম্ভবত পূর্ববর্তী চ্যালেঞ্জের ভিত্তিতে একটি রসিকতা। কেউ কি এর ভিত্তিতে সত্যই নিম্নচোট করেছেন?
লুইস মেন্ডো

5
এটি একক-বাইট সমাধানগুলি প্রতিরোধ করে না। অযৌক্তিক +1 এর জন্য @ ডিআইনেওয়ালা +1।
অ্যাডম

5
স্ট্রিংটি শুরু করার জন্য প্যালিনড্রোম না হলে কী হবে?
জাভন_ওয়ারেন্টাইল

উত্তর:




6

পাইথন 2, 23 বাইট

আমি আমার ফোনে পরীক্ষা করতে সক্ষম নই, তবে এটি কাজ করা উচিত:

lambda s:s[:-~len(s)/2]

2
আপনি যদি অ্যান্ড্রয়েডে চলমান থাকেন তবে আপনি গুগল প্লে স্টোর থেকে কিউপিথন ব্যবহার করতে পারেন। এটি আমি খুঁজে পেয়েছি সেরা :)
Yytsi


@ ম্যাট এটি অতিমাত্রায় কাজ করে যদি আপনি চান সমস্ত পাইথন।
mbomb007

@ ম্যাট পাশাপাশি আপনি যদি apt-getআপনার ফোনে সন্ধান করতে পারেন তবে এটি সম্ভবত কোনও সাধারণ ফোন নয়।
আইনী অলস

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

6

ফাজি অক্টোো গুয়াকামোল, 4 বাইট

2.^/

এমন একটি ভাষা অনুসন্ধানে আমি কিছুটা সময় ব্যয় করেছি যাতে এই চ্যালেঞ্জটি সংক্ষিপ্ত, এবং বুঝতে পেরেছিলাম যে আমি বোবা ছিলাম এবং আমার নিজস্ব ভাষাও তা করেছে।





4

জাভাস্ক্রিপ্ট (ES6), 32 26 25 বাইট

1 বাইট সংরক্ষিত নীলকে ধন্যবাদ:

s=>s.slice(0,-s.length/2)


পূর্ববর্তী সমাধানগুলি
26 বাইট ডাউনগোটকে ধন্যবাদ:

s=>s.slice(0,s.length/2+1)

32 বাইট:

s=>s.slice(0,(l=s.length/2)+l%2)

1
s=>s.slice(0,s.length/2+1)দৈর্ঘ্যটি সর্বদা অদ্ভুত থাকবে তাই আপনি কেবল সংক্ষিপ্ত করতে পারেন
ডাউনগোট

@ ডাউনগোট আপনাকে ধন্যবাদ আমি দেখতে পেয়েছি যে আরও একটি বাইট s=>s.slice(0,s.length/2+.5)এমনকি দৈর্ঘ্যের জন্যও কাজ করবে।
হেডি

2
-s.length/2বিজোড় এবং এমনকি দৈর্ঘ্যের উভয়ের জন্য কাজ করে।
নিল

4

WinDbg, 87 71 বাইট

db$t0 L1;.for(r$t1=@$t0;@$p;r$t1=@$t1+1){db$t1 L1};da$t0 L(@$t1-@$t0)/2

NUL byোকানো না করে -16 বাইট পরিবর্তে দৈর্ঘ্য অতিক্রম করে da

ইনপুট পিএসইডো-রেজিস্ট্রারের কোনও ঠিকানার মাধ্যমে প্রবেশ করানো হয় $t0। উদাহরণ স্বরূপ:

eza 2000000 "abcdedcba"       * Write string "abcdedcba" into memory at 0x02000000
r $t0 = 33554432              * Set $t0 = 0x02000000
* Edit: Something got messed up in my WinDB session, of course r $t0 = 2000000 should work
* not that crazy 33554432.

এটি মধ্য চরের ডান (বা স্ট্রিংয়ের দৈর্ঘ্য থাকলে ডান-মাঝারি) একটি নাল দিয়ে প্রতিস্থাপন করে কাজ করে এবং তারপরে মূল শুরুর স্মৃতি ঠিকানা থেকে স্ট্রিংটি মুদ্রণ করে।

db $t0 L1;                                   * Set $p = memory-at($t0)
.for (r $t1 = @$t0; @$p; r $t1 = @$t1 + 1)   * Set $t1 = $t0 and increment until $p == 0
{
    db $t1 L1                                * Set $p = memory-at($t1)
};
da $t0 L(@$t1-@$t0)/2                        * Print half the string

আউটপুট:

0:000> eza 2000000 "abcdeedcba"
0:000> r $t0 = 33554432
0:000> db$t0 L1;.for(r$t1=@$t0;@$p;r$t1=@$t1+1){db$t1 L1};da$t0 L(@$t1-@$t0)/2
02000000  61                                               a
02000000  61                                               a
02000001  62                                               b
02000002  63                                               c
02000003  64                                               d
02000004  65                                               e
02000005  65                                               e
02000006  64                                               d
02000007  63                                               c
02000008  62                                               b
02000009  61                                               a
0200000a  00                                               .
02000000  "abcde"

3

হাস্কেল, 27 বাইট

take=<<succ.(`div`2).length

পয়েন্টফ্রি সংস্করণ

\x->take(div(length x)2+1)x

যা ২ 27 বাইটও।


3

এমএটিএল , 7 6 বাইট

9LQ2/)

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

ব্যাখ্যা

9L       % Push array [1, 1j]
  Q      % Add 1: transforms into [2, 1+1j]
   2/    % Divide by 2: transforms into [1, 0.5+0.5j]
     )   % Apply as index into implicit input. The array [1, 0.5+0.5j] used as an index
         % is interpreted as [1:0.5+end*0.5]

1
বাহ,
মাইল

@ মাইলস ধন্যবাদ! হ্যাঁ, এটি সুবিধাজনক। কাল্পনিক ইউনিট হিসাবে কাজ করে end, এবং অ্যারের উপাদানগুলির মধ্যে কলোনগুলি অন্তর্ভুক্ত
লুইস মেন্ডো



3

ব্র্যাচল্যাগ , 4 বাইট

@2tr

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

ব্যাখ্যা

@2        Split in half
  t       Take the second half
   r      Reverse it

যদি ইনপুটটির বিশিষ্ট দৈর্ঘ্য থাকে, তবে দ্বিতীয় অর্ধের দ্বারা উত্পাদিত হয় @2এটি সবচেয়ে দীর্ঘতম, এটি আমাদের ফিরে আসা উচিত (এটির বিপরীত হওয়ার পরে)।



3

পার্ল, 15 বাইট

জন্য +2 অন্তর্ভুক্ত -lp

STDIN এ ইনপুট স্ট্রিং দিন:

depal.pl <<< "HelleH"

depal.pl:

#!/usr/bin/perl -lp
s/../chop/reg

-lসত্যিই প্রয়োজন হয় না যদি আপনি ইনপুট চূড়ান্ত সম্পর্কে newline ছাড়া যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে , কিন্তু আমি এটা অন্তর্ভুক্ত অন্যান্য Perl সমাধান যে এটি ব্যবহার করতে ন্যায্য যাবে।



2

টিআই-বেসিক, 14 বাইট

স্ট্যান্ডার্ড ফাংশন। সূচক 1 থেকে সূচকে স্ট্রিংটি ফেরত দেয় (দৈর্ঘ্য / 2 + 1/2)।

sub(Ans,1,.5+.5length(Ans

2

গেমমেকার ল্যাঙ্গুয়েজ, 59 বাইট

a=argument0 return string_copy(a,1,ceil(string_length(a)/2)

2

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

<?=substr($a=$argv[1],0,1+strlen($a)/2);

strlen($a)/2, int- এ নিক্ষেপ পরার ইনপুট সবসময় বিজোড় দৈর্ঘ্য থাকার সঙ্গে, +1ধরপাকড় করার যথেষ্ট।

কোনও দৈর্ঘ্যের জন্য 42 বাইট :

<?=substr($a=$argv[1],0,(1+strlen($a))/2);

অজানা দৈর্ঘ্যের জন্য (1+strlen)/2, পুরোপুরি কাস্ট হয়ে যায় strlen/2


ইনপুটটি যেমন ( কোডগল্ফ.স্ট্যাকেক্সেঞ্জার.কমেসেশনস / ৯৮৩২২৫/২ ) থেকে আসা হিসাবে সংজ্ঞায়িত করা হয়েছে তখন এর দৈর্ঘ্য সর্বদা স্বতন্ত্র হবে, তাই আপনি কেবল নিজের সংক্ষিপ্তটির সাথে যেতে পারেন।
ব্যবহারকারী59178

2

ডিপ, 8 বাইট

H{C'0ÏEI

ব্যাখ্যা:

           # Implicit input
 H         # Push length of input
  {        # Add 1
   C       # Divide by 2
    '      # Convert to int
     0Ï    # Get string back
       E   # Push prefixes of string
        I  # Push prefixes[a]
           # Implicit print

এটি সম্ভবত অনেক উন্নত হতে পারে।


2

পার্ল, 23 + 2 ( -plপতাকা) = 28 25 বাইট

perl -ple '$_=substr$_,0,1+y///c/2'

Ungolfed:

while (<>) {             # -p flag
    chomp($_)            # -l flag
    $_ = substr($_, 0, 1 + length($_) / 2);
    print($_, "\n")      # -pl flag
}

থ্যাঙ্কস টু @ অর্ডনিউ


1
আপনি প্রতিস্থাপন 3 টি অক্ষর সংরক্ষণ করতে পারবেন length()সঙ্গেy|||c
ardnew

2

বেফুঞ্জ , 24 22 বাইট

~:0`!#v_\1+
0:-2,\_@#`

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


বেফুঞ্জের কোনও স্ট্রিং বা অ্যারে টাইপ নেই তাই সবকিছু এক সাথে স্ট্যাকের একটি অক্ষরে সম্পন্ন হয়। প্রথম লুপটি (শীর্ষ লাইনে) পঠিত অক্ষরের সংখ্যা গণনা করে (স্ট্যাকের 2 টিরও কম উপাদানের সাথে অদলবদল প্রাথমিক 0 উত্পাদন করে)। দ্বিতীয়টি (মাঝের লাইনে) অক্ষরগুলি মুদ্রণের সময় দ্বিগুণ দ্রুত গণনা করার সময় প্রিন্ট করে। ফলস্বরূপ ইনপুটটির কেবলমাত্র শেষ অর্ধেকটি মুদ্রিত হয় তবে LIFO তাই এটি সঠিক ক্রমে।

প্রথম লুপটির আরও ভাল সংস্করণের জন্য ব্রায়ান গ্র্যাডিনকে ধন্যবাদ ।


1
আপনি আমাকে আধ ঘন্টা এবং 7 বাইট দ্বারা মারলেন :) befunge.tryitonline.net/…
ব্রায়ান গ্র্যাডিন

@ ব্রায়ান গ্র্যাডিন, দুর্দান্ত এখন আমি আপনাকে 9 বাইট দ্বারা পরাজিত করেছি;)
লিনাস

আহ, ঠিক আছে. আমি দেখছি তুমি কি করেছ। মুদ্রণের জন্য অক্ষরের প্রকৃত সংখ্যা গণনা করার চেয়ে দু'টি গুণতে আমার কাছে ঘটেনি। সুন্দরভাবে সম্পন্ন.
ব্রায়ান গ্রেডিন

2

পার্ল, 14 + 3 ( -lFপতাকা) = 19 17 বাইট

5.20.0+ এর জন্য:

perl -lF -E 'say@F[0..@F/2]'

5.10.0+ (19 বাইট) এর জন্য:

perl -nlaF -E 'say@F[0..@F/2]'

Ungolfed:

while (<>) {             # -n flag (implicitly sets by -F in 5.20.0+)
    chomp($_)            # -l flag
    @F = split('', $_);  # -aF flag (implicitly sets by -F in 5.20.0+)
    say(@F[0 .. (scalar(@F) / 2)]);
}

থ্যাঙ্কস টু @ সিম্বাবাকে।


2
আপনি দুটি বাইট সংরক্ষণ করতে পারেন, আপনাকে সেট করার দরকার নেই -nএবং -aকারণ -Fএটি স্পষ্টভাবে দেয়।
সিম্বাবুখে

@ সিম্বাবাক হ্যাঁ তবে কেবল 5.20.0+ এর জন্য।
ডেনিস ইবায়েভ


2

পাইথ , 8 7 বাইট

<zh/lz2

@ স্টিভেন এইচকে ধন্যবাদ দিয়ে 1 টি সংরক্ষণ করা হয়েছে

সংক্ষিপ্ত পাইথ উত্তর নয় (অর্ধেক দ্বারা) তবে আমি ভাষাটি শেখার চেষ্টা করছি এবং এটি ব্যবহার করে এটি আমার প্রথম পোস্ট। মতামত এবং মতামত জন্য যতটা পোস্ট। এটি প্রথম পাইথ প্রোগ্রাম যা আমি আসলে কাজ করতে পেরেছি :)

@ মালতিসেনের 4 টি বাইট উত্তর কীভাবে কাজ করে তা এখনই আমার কাজ করা দরকার :-)


1
আপনি যদি এখনও কিভাবে Maltysen এর উত্তর কাজ চান, এটা cইনপুট লাফিয়ে Qমধ্যে 2টুকরা এবং ব্যবহার প্রথম টুকরা লাগে h(যা, ধন্যবাদ চপ বাস্তবায়ন করা, পাশাপাশি কেন্দ্র চিঠি দখল হবে)। আপনার কোড হিসাবে, আপনি সংখ্যা বৃদ্ধি করার জন্য অন্তর্নির্মিত, এর +1সাথে প্রতিস্থাপন করতে পারেন h
স্টিভেন এইচ।

ব্যাখ্যাটির জন্য এবং hইঙ্গিতের জন্য ধন্যবাদ স্টিভেন এইচ। অনেক বিল্ট-ইন রয়েছে বলে আমি অনুমান করি যে এগুলি সব খুঁজে পেতে কেবল কিছুটা সময় লাগে :)
এলপেড্রো

1
সমস্যা নেই! আপনার যদি কখনও কোনও সাহায্যের প্রয়োজন হয় তবে আমাকে উনিশতম বাইটে পিং করার চেষ্টা করুন।
স্টিভেন এইচ।


2

সি, 31 30 বাইট

সাইওসকে ধন্যবাদ 1 বাইট সংরক্ষণ করা।

f(char*c){c[-~strlen(c)/2]=0;}

ব্যবহার:

main(){
 char a[]="hellolleh";
 f(a);
 printf("%s\n",a);
}

@ কেভিন ক্রুজসেন ঠিক করেছেন
কার্ল ন্যাপফ

হাই, দুঃখিত আমি আমার মন্তব্য মুছে ফেলেছি। আমি এটা ঠিক বলেছিলাম যে এটি প্যালিনড্রোমগুলির পক্ষেও কাজ করবে না। তবে, যেহেতু এটি অন্যান্য চ্যালেঞ্জের বিপরীত, এমনকি প্যালিনড্রোমগুলির জন্য কোনও পরীক্ষার মামলাও হবে না .. এর জন্য দুঃখিত, আপনি নিজের পরিবর্তনটি পূর্বাবস্থায় ফিরিয়ে আনতে পারেন। আমার কাছ থেকে +1 :)
কেভিন ক্রুইজসেন

2
ওয়েল, এটি এখন একই দৈর্ঘ্য, এমনকি + বিজোড় এবং গল্ফিয়র দেখায় জন্য কাজ করে। আমি এই ঠিক আছে।
কার্ল ন্যাপফ

এটি যুক্তিযুক্ত একটি মেমরি ফাঁস :-)
শ্রীভাতসার

1
আমি মনে করি আপনি স্থানটি সরিয়ে ফেলতে পারেনchar* c
সাইয়েস


1

ম্যাটল্যাব / অক্টোব, 20 19 18 16 বাইট

ইস্টারলি ইরকের উত্তর থেকে ধারণা ধার করা বন্ধ করে 1 বাইট ( 1পরিবর্তে যুক্ত করুন .5)
@ ব্রেইট @ স্টিভিগ্রিফিনকে অপ্রয়োজনীয় ধন্যবাদ (অপ্রয়োজনীয় বন্ধনী)

@(x)x(1:end/2+1)

Ideone এ ব্যবহার করে দেখুন


@ স্টেভিগ্রিফিন ধন্যবাদ! আমি কী ভাবছিলাম তা আমি জানি না ...
লুইস মেন্ডো

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