সব একসঙ্গে এখন


24

1 থেকে 9 পর্যন্ত সংখ্যার একটি তালিকা দেওয়া, প্রতিটি সংখ্যাকে একক সঙ্গতিপূর্ণ ব্লক হিসাবে একত্রে শ্রেণিবদ্ধ করা হয়েছে কিনা তা আউটপুট দেয়। অন্য কথায়, একই অঙ্কের কোনও দুটিই পৃথক অঙ্ক দ্বারা পৃথক হয় না। কোনও অঙ্ক যদি কিছু না হাজির হয় তবে এটি ঠিক। সবচেয়ে কম বাইট জেতা

ইনপুট: 1 থেকে 9. সংখ্যাগুলির একটি খালি খালি তালিকা এটি দশমিক সংখ্যা, স্ট্রিং, তালিকা বা অনুরূপ ক্রম হিসাবে হতে পারে।

আউটপুট: একটি সামঞ্জস্যপূর্ণ Truthy মান সব ডিজিটের সংলগ্ন ব্লক গোষ্ঠীবদ্ধ হয়, এবং একটি সামঞ্জস্যপূর্ণ Falsey মান যদি তারা নয়।

সত্য ঘটনা:

3
51
44999911
123456789
222222222222222222222

মিথ্যা মামলা:

818
8884443334
4545
554553
1234567891


2
সিঙ্গলটন স্ট্রিংগুলির একটি তালিকা কি গ্রহণযোগ্য ইনপুট ফর্ম্যাট হতে পারে?
ডেনিস

হ্যাঁ, সিঙ্গলেটন ঠিক আছে।
xnor

কেউ কি আমাকে বলতে পারবেন যে এই সমস্যার জন্য সবচেয়ে কার্যকর অ্যালগরিদম কী হবে? বা এর চেয়ে আরও সাধারণ সমস্যা রয়েছে যে এটি আমি সন্ধান করতে পারি তার অধীনে?

@ amt528 আপনি প্রতিটি অঙ্কের উপরে পুনরাবৃত্তি করে এবং এটি পরীক্ষা করে দেখতে পারেন যে এটির আগে কোনও রান নেই।
xnor

কীভাবে এটি কার্যকর হয়েছে তার একটি উদাহরণ আপনি দিতে পারেন?

উত্তর:


18

পাইথন 3, 38 34 33 বাইট

lambda s:s==sorted(s,key=s.index)

এটি আর্গুমেন্ট হিসাবে অঙ্ক বা সিঙ্গলটন স্ট্রিংয়ের একটি তালিকা প্রত্যাশা করে। আইডিয়নে এটি পরীক্ষা করুন ।

4 বাইট বন্ধ করে গল্ফ করার জন্য @ এসএসটকে ধন্যবাদ!

1 বাইট বন্ধ গল্ফ করার জন্য @ মিমিবিসকে ধন্যবাদ!


পরিবর্তে যদি আপনার স্ট্রিংয়ের একটি তালিকা গ্রহণ করার অনুমতি দেওয়া হয় তবে আপনি এটিকে ছোট করে করতে পারেনlambda s:s==sorted(s,key=`s`.find)
xsot

আহ, আমি একটি তালিকা নেওয়ার চেষ্টা করেছি, তবে আমি ব্যাকটিক্স ব্যবহার করার কথা ভাবি নি ... আমি ওপিটিকে জিজ্ঞাসা করব।
ডেনিস

আমি কি কিছু মিস করছি - আপনি কেবল ব্যবহার করতে পারবেন না কেন s.find?
ব্যবহারকারী 253751

@ মিম্বিসকে সিঙ্গলটন sস্ট্রিংগুলির একটি তালিকা হতে হবে (বা sতুলনার জন্য আমাকে তালিকা তৈরি করতে হবে), এবং list.findএটি সংজ্ঞায়িত করা হয়নি ...
ডেনিস

@ ডেনিস s.indexতখন? আমার জন্য কাজ করে বলে মনে হয়।
ব্যবহারকারী 253751

14

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

s=>!/(.)(?!\1).*\1/.test(s)

দুটি স্বতঃস্ফূর্ত অঙ্ক সন্ধান করতে নেতিবাচক চেহারা দেখায়। যদি কমপক্ষে দু'টি অঙ্ক বিদ্যমান থাকে, তবে সেগুলি চয়ন করা যেতে পারে যাতে প্রথম সংখ্যাটি ভিন্ন অঙ্কের আগে থাকে।


1
অথবা, কেবল একটি রেজিেক্স এক্সডি ব্যবহার করুন। এটিও কাজ করে।
কনর ও'ব্রায়ান

1
আহেম রেটিনা আহেম
জন ডিভোরাক

13

05 এ বি 1 ই , 4 বাইট

কোড:

Ô¹ÙQ

ব্যাখ্যা:

Ô     # Push connected uniquified input. E.g. 111223345565 would give 1234565.
 ¹    # Push input again.
  Ù   # Uniquify the input. E.g. 111223345565 would give 123456.
   Q  # Check if equal, which yields 1 or 0.

ব্যবহার সিপি-1252 এনকোডিং।

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


2
আপনি ... স্রেফ জেলিকে মারলেন ... আমি কখনও ভাবিনি যে এটি সম্ভব ছিল ...
বেলিন্ট

11

জেলি , ৫ বাইট

ĠIFPỊ

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

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

ĠIFPỊ  Main link. Input: n (list of digits or integer)

Ġ      Group the indices of n by their corresponding values, in ascending order.
       For 8884443334, this yields [[7, 8, 9], [4, 5, 6, 10], [1, 2, 3]].
 I     Increments; compute the all differences of consecutive numbers.
       For 8884443334, this yields [[1, 1], [1, 1, 4], [1, 1]].
  F    Flatten the resulting 2D list of increments.
   P   Product; multiply all increments.
    Ị  Insignificant; check if the product's absolute value is 1 or smaller.

পাঁচটা বাইট আপনি বলছেন? এ কেমন এনকোডিং?
জন ডিভোরাক

4
জেলির নিজস্ব কোড পৃষ্ঠা রয়েছে , এটি প্রতিটি একক বাইট হিসাবে 256 টি অক্ষরকে বোঝায় enc
ডেনিস

9

পাইথ, 6 5 বাইট

1 বাইট FryAmTheEggman ধন্যবাদ

SIxLQ

পাইথন সমাধান দ্বারা অনুপ্রাণিত এখানে

পরীক্ষা স্যুট

ব্যাখ্যা:

SIxLQ
  xLQ   Map each element in the input to its index in the input. Input is implicit.
SI      Check whether this list is sorted.

3
SIxLQকাজ মনে হচ্ছে।
FryAmTheEggman

এটি প্রতিভা।
মালটিসেন

1
দ্বিতীয়টি Qসঠিকভাবে পার্স করা হবে বলে মনে হচ্ছে না, এটি আর্গুমেন্ট অর্ডার বা এমন কিছু অদলবদল করে যাতে আপনি সমস্ত পান 0এবং এটি সর্বদা সত্য দেয়। এখানে একটি পরীক্ষার স্যুট।
FryAmTheEggman

8

আর, 66 48 46 43 38 বাইট

function(s)!any(duplicated(rle(s)$v))

এটি এমন একটি ফাংশন যা ইনপুটটিকে অঙ্কের ভেক্টর হিসাবে স্বীকার করে এবং একটি বুলিয়ান দেয়। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন।

সংক্ষিপ্ততম নয় তবে আমি ভেবেছিলাম এটি একটি মজাদার উপায়। আমরা ইনপুটটি এনকোড করে দৈর্ঘ্য চালাই এবং মানগুলি বের করি। যদি মানগুলির তালিকায় সদৃশ থাকে তবে ফিরে আসুন FALSE, অন্যথায় ফিরে আসুন TRUE

সমস্ত পরীক্ষার কেস অনলাইনে যাচাই করুন

20 বাইটগুলি মিকিটি, 3 টি অ্যালবার্ট ম্যাসক্লানসকে ধন্যবাদ, এবং 5 মণিকে ধন্যবাদ!


7

এমএটিএল , 8 বাইট

t!=tXSP=

আউটপুট হ'ল সত্যের জন্য কেবলমাত্র অ্যারে বা মিথ্যাচারের জন্য কমপক্ষে একটি শূন্যযুক্ত একটি অ্যারে।

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

ব্যাখ্যা

ইনপুটটি বিবেচনা করুন 22331, যা শর্তটি সন্তুষ্ট করে। প্রতিটি অক্ষর একে অপরের সমান কিনা তা পরীক্ষা করে 2D অ্যারে দেয়

1 1 0 0 0
1 1 0 0 0
0 0 1 1 0
0 0 1 1 0
0 0 0 0 1

চূড়ান্ত ফলাফল সত্য হতে হবে যদি সেই অ্যারের সারিগুলি (পারমাণবিক হিসাবে বিবেচিত) ক্রমহ্রাসমান ক্রমে থাকে । তুলনার জন্য, ইনপুট 22321অ্যারে দেয়

1 1 0 1 0
1 1 0 1 0
0 0 1 0 0
1 1 0 1 0
0 0 0 0 1

যার মধ্যে সারিগুলি বাছাই করা হয় না।

t!   % Take string input. Duplicate and tranpose
=    % Test for equality, element-wise with broadcast: gives a 2D array that
     % contains 0 or 1, for all pairs of characters in the input
t    % Duplicate
XS   % Sort rows (as atomic) in increasing order
P    % Flip vertically to obtain decreasing order
=    % Test for equality, element-wise

5

রেটিনা , 17 বাইট

M`(.)(?!\1).+\1
0

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

প্রথম Regex ডিজিটের যা মিলে যায় হয় তাই আমরা একটি পেতে অন্য সংখ্যার দ্বারা পৃথক, 0মধ্যে বৈধ ইনপুট জন্য এবং যেকোনো জায়গায় 1এবং 9এর লোভ কারণে অবৈধ ইনপুট জন্য ( .+আমাদের আরো অধিক পেতে পারে না n-1জন্য ম্যাচn বিভিন্ন সংখ্যার)।

ফলাফলের সত্যতা উল্টাতে, আমরা এর সংখ্যা গণনা করি 0যা 1বৈধ ইনপুট এবং অবৈধের 0জন্য।


আমি একটি ছোট তৈরি করেছি, তবে এটি আপনার কাছে যথেষ্ট যে এটির পরিবর্তে কোনও মন্তব্য হওয়া উচিত। ম্যাচের পরিবর্তে অ্যান্টিগ্রিপ ব্যবহার করুন, তারপরে শেষ লাইনটি সরিয়ে দিন: A`(.)(?!\1).+\115 বাইটের জন্য। একাধিক ইনপুট জন্য কাজ করে। সত্যবাদী ইনপুট, মিথ্যা কিছুই নয়। একজন তার নিজের ভাষায় মার্টিনকে আউট-গল্ফ করেন না। :)
mbomb007

@ mbomb007 আমি মনে করি আমি আসলে এটি বিবেচনা করেছি, তবে দুর্ভাগ্যক্রমে, চ্যালেঞ্জটি একটি ধারাবাহিক সত্যবাদী (এবং মিথ্যা) মান জিজ্ঞাসা করে, সুতরাং ইনপুটটিকে সত্য হিসাবে মুদ্রণ করার অনুমতি নেই।
মার্টিন ইন্ডার

5

জাভা, 161 156 বাইট

কারণ জাভা ...

এই উত্তরটি থেকে নির্লজ্জভাবে geণ নেওয়া চুরি করা কারণ আমি অ্যারে এবং গণিতের ম্যানিপুলেশন দিয়ে এটি করার চেষ্টা শুরু করেছিলাম তবে এটি অত্যন্ত জঘন্যভাবে জটিল হয়ে উঠেছে, এবং রেজেক্স এই সমস্যার জন্য যেকোন একটি সরঞ্জাম হিসাবে ভাল।

import java.util.regex.*;public class a{public static void main(String[] a){System.out.println(!Pattern.compile("(.)(?!\\1).*\\1").matcher(a[0]).find());}}

Ungolfed:

import java.util.regex.*;

public class a {
    public static void main(String[] args) {
        System.out.println(!Pattern.compile("(.)(?!\\1).*\\1").matcher(args[0]).find());
    }

বুদ্ধিমান জাভা ব্যক্তির মতো শায়িত করা:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class  {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("(.)(?!\\1).*\\1");
        Matcher m = p.matcher(args[0]);
        System.out.println(!m.find());
    }
}

3
like a sensible Java personযে জাভা ব্যবহার না করা হবে।
বিড়াল

অন্যান্য সমাধানগুলি কেবল একটি ক্রিয়াকলাপ সরবরাহ করছে, এটিকে অনেক খাটো করে তুলবে। এরকম কিছুs->s.match("(.)(?!\\1).*\\1")
Andreas

2
কিন্তু তারপরে আমরা উত্তরটির শব্দদ্বয় নিয়ে আনন্দ করতে পারি না।
জেমসএনএল


4

রুবি, 23 বাইট

বেনামে ফাংশন। একটি স্ট্রিং গ্রহণ করে। রেজেক্স স্ট্রাট

->n{/(.)(?!\1).*\1/!~n}

রেজেক্স ব্রেকডাউন

/(.)(?!\1).*\1/
 (.)            # Match a character and save it to group 1
    (?!\1)      # Negative lookahead, match if next character isn't
                #  the same character from group 1
          .*    # Any number of matches
            \1  # The same sequence as group 1

!~মানে স্ট্রিংয়ের মধ্যে যদি রেজেক্সের কোনও মিল না থাকে তবে ফিরে আসুন trueএবং অন্যথায় ফিরে আসুন false



4

এমএটিএল, 13 11 বাইট

u"G@=fd2<vA

দুটি বাইট সংরক্ষণের জন্য লুইস মেন্ডোকে ধন্যবাদ !

অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা

        % Grab the input implicitly
u       % Find the unique characters
"       % For each of the unique characters
    G   % Grab the input again
    @=  % Determine which chars equal the current char
    f   % Find the locations of these characters
    d   % Compute the difference between the locations
    2<  % Find all index differences < 2 (indicating consecutive chars)
    v   % Vertically concatenate all stack contents
    A   % Ensure that they are all true
        % Implicit end of the for loop

আপনি উদ্ধৃতি (ডিফল্টরূপে অনুমোদিত) দিয়ে ইনপুট নিতে পারেন এবং সরান j। এছাড়াও, আমি মনে করি আপনি vAলুপের মধ্যে চলে যেতে এবং মুছে ফেলতে পারেন]
লুইস মেন্ডো

@ লুইস মেন্ডো ধন্যবাদ! আমি Y&ভিতরে withালার সাথে সাথে গোলযোগ করেছি কিন্তু এটি কার্যকর হয়নি কারণ fd2<খালি থাকতে পারে। vAভিতরে চলন্ত দুর্দান্ত কাজ যদিও! এছাড়াও আমি সত্যিই আমাদের ইচ্ছুক যে আমরা একটি স্থিতিশীল ছিল uniqueযে টন বাইট গ্রহণ না।
Suever

পূর্বনির্ধারিত স্ট্রিংয়ের পরিবর্তে একটি সংখ্যা ব্যবহার করে এখন স্থিতিশীল অনন্যটি কিছুটা কম নেয়। যদিও আমি ভবিষ্যতে একটি সংক্ষিপ্ত সংস্করণ যুক্ত করতে পারি। অথবা কেবলমাত্র uডিফল্ট হিসাবে স্থিতিশীল করুন (আপনি সর্বদা Sপরে দুটি বাইট অন্তর্ভুক্ত করতে পারেন )। আপনি কি মনে করেন?
লুইস মেন্ডো

3

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

import Data.List 
((==)<*>nub).map head.group

ব্যবহারের উদাহরণ: ((==)<*>nub).map head.group $ "44999911"-> True

একটি অ-বিন্দু মুক্ত সংস্করণ:

f x = q == nub q                -- True if q equals q with duplicates removed
  where
  q = map head $ group x        -- group identical digits and take the first
                                -- e.g. "44999911" -> ["44","9999","11"] -> "491"
                                -- e.g  "3443311" -> ["3","44","33","11"] -> "3431"

3

জে, 8 বাইট

-:]/:i.~

এটি J.js দিয়ে পরীক্ষা করুন

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

-:]/:i.~  Monadic verb. Argument: y (list of digits)

     i.~  Find the index in y of each d in y.
  ]/:     Sort y by the indices.
-:        Match; compare the reordering with the original y.


11
কৌতুক বা গল্ফ করার পরামর্শটি নিশ্চিত না ...
ডেনিস

3

পাইথন, 56 55 বাইট

a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1

পাইথন 3.4.1 ( int not subscriptable) এ ব্যর্থ হয়
ক্যালকুলেটরফলাইন

একটি অতিরিক্ত বাইট সংরক্ষণ করেছেন ~(যা আক্ষরিক সমতুল্য 1-):a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1
ক্যালকুলেটরফলাইন

3

সি #, 119 বাইট

bool m(String s){for(int i=0;i<9;i++){if(new Regex(i.ToString()+"+").Matches(s).Count>1){return false;}}return true;}

Ungolfed

bool m(String s) {
    for(int i=0;i<9;i++) {
        if(new Regex(i.ToString() + "+").Matches(s).Count > 1) {
            return false;
        }
    }

    return true;
}

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

আমার খারাপ। যখন আমি এই কোড গল্ফটিতে প্রথম অংশ নেওয়ার পরিকল্পনা করেছি তখন আমি উদ্দেশ্যটি ভুলভাবে পাঠ করেছি এবং অন্য সমাধান করার জন্য খুব বেশি সময় পেলাম না (এবং নিজেকে জানার পরে আমি পূর্ববর্তী পোস্ট সমাধানটি সংশোধন করার চেষ্টা করব না)। কিন্তু তারপরে আমাকে জানানো হয়েছিল যে আমার আরও কিছুটা সময় নিখরচায় ছিল এবং "সঠিক সমাধান" পোস্ট করার চেষ্টা করা হয়েছিল। আপনি যা বলেছিলেন তা করতে ভেবে দেখেনি। পরের বার আমি তা মনে রাখব!
ahhmaan

কোনও সমস্যা নেই, আমি আশা করি আপনার সম্প্রদায়টিতে ভাল সময় কাটবে। :)
মার্টিন এন্ডার

2

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

s->issorted(s,by=x->findfirst(s,x))

যে কারণেই হোক sortনা কেন, স্ট্রিং নেয় না, তবে issorted...


... জুলিয়ায় স্ট্রিংগুলি কি পাইথনের মতো স্থাবর নয়? এটি আমাকে সত্যিই দু: খিত করে তুলবে।
বিড়াল 19

1
হ্যাঁ, স্ট্রিং অপরিবর্তনীয়। এ কারণেই সম্ভবত issortedকাজ করে, কিন্তু sortহয় না।
ডেনিস

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

@AlexA। সুতরাং খুব বেশি আসলে পাইথন মত; পার্থক্যটি হ'ল পাইথনের sortedবিল্টিন তার পুনরাবৃত্ত যুক্তিটিকে প্রথমে পরিবর্তনীয় sorted(string)তালিকায় পরিণত করে
বিড়াল

2

ফ্যাক্টর, 22 বাইট

[ dup natural-sort = ]

টিনে যা বলে তা করে Does বেনামহুসের কাজ হিসাবে আপনার এটি করা উচিত call, বা এটি করা উচিত : word ;


4
এটি আমাকে ভয়
দেখায়

@ ডাউনরেপ_নেশন: পি
বিড়াল

2

লুয়া, 107 94 85 বাইট

13 বাইটস সংরক্ষণ করেছেন @ লিক্যুনকে ধন্যবাদ

কমপক্ষে, এটি জাভা: ডি প্রহার করে। লুয়া স্ট্রিংগুলি চালিত করতে সফল হয় তবে আমি মনে করি এটি যথেষ্ট ভাল :)

এটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে এর ইনপুট নেয় এবং 1সত্যবাদী কেস এবং মিথ্যা মামলাগুলির falseফলাফল দেয়। এখন এর প্রস্থান কোডটি ব্যবহার করে আউটপুট। সত্যবাদীর জন্য 0 এবং মিথ্যাচারের জন্য 1 প্রস্থান করুন

o=os.exit;(...):gsub("(.)(.+)%1",function(a,b)if 0<#b:gsub(a,"")then o(1)end end)o(0)

Ungolfed

সাবধানতা অবলম্বন করুন, দুটি যাদু-পরিবর্তনশীল কল ...রয়েছে, প্রথমটিতে প্রোগ্রামটির যুক্তি রয়েছে, দ্বিতীয়টি বেনামে ফাংশনে স্থানীয় এবং এর পরামিতি রয়েছে

o=os.exit;               -- ; mandatory, else it would exit instantly
(...):gsub("(.)(.+)%1",  -- iterate over each group of the form x.*x and apply an anonymous
  function(a,b)          -- function that takes the captured group as parameters
  if 0<#b:gsub(a,"")     -- if the captured group (.+) contain other character than
  then                   -- the one captured by (.)
    o(1)                 -- exit with falsy
  end
end)
o(0)                     -- exit with truthy, reached only when the string is okay

যদি এটি অনুমোদিত হয় তবে আপনি এর os.exit()সাথে প্রতিস্থাপন করতে পারেন i=#0...
লিক নুন

1

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

h=y=>y.match(/(.)\1*/g);x=>h((u=h(x)).sort().join``).length==u.length

বা, সমতুল্য:

x=>((u=x.match(r=/(.)\1*/g)).sort().join``).match(r).length==u.length
x=>(h=y=>y.match(/(.)\1*/g))((u=h(x)).sort().join``).length==u.length

গল্ফিং চলছে।

পরীক্ষার কেস যাচাই করুন

var truthy = `3
51
44999911
123456789
222222222222222222222`.split `
`;
var falsey = `818
8884443334
4545
554553
1234567891`.split `
`;

var Q = x => ((u = x.match(r = /(.)\1*/g)).sort().join ``).match(r).length == u.length;
truthy.concat(falsey).forEach(e => {
  t = document.createTextNode(`${e} => ${Q(e)}`);
  o.appendChild(t);
  o.appendChild(document.createElement("br"));
});
* {
  font-family: Consolas, monospace;
}
<div id=o></div>


1

সি # 111 বাইট

bool f(string s){for(int i=0;i<s.Length-1;i++)if(s[i]!=s[i+1]&&s.LastIndexOf(s[i])!=i)return 1==2;return true;}

পুরানো কৌশল 131 বাইট

bool s(string i){var f=Regex.Matches(i,@"([0-9])\1{0,}").Cast<Match>().Select(m=>m.Value[0]);return f.Distinct().SequenceEqual(f);}

প্রথম গল্ফ আমি মনে করি আমি ঠিক আছে


1

সি, 74 73 71 বাইট

চাঁচা এক @xsot তিন বাইট ধন্যবাদ!

a[99],c,m;main(d){for(;~c;m|=c^d&&a[d=c]++)c=getchar();putchar(48+!m);}

a[99]আমি পার্লের অটোভিভিফিকেশন পছন্দ করি! ওহ, অপেক্ষা করুন ...
বিড়াল

আমার মনে হয় এটি কাজ করে:a[99],c,m;main(d){for(;~c;m|=a[d=c]+=c!=d)c=getchar();putchar(48+1/m);}
xsot

@xsot - প্রতিস্থাপন খেউরি এক বাইট জন্য আপনাকে ধন্যবাদ !--mদিয়ে 1/m। সম্পর্কে a[d=c]+=c!=d, আমি এটি জিসিসি দিয়ে চেষ্টা করেছি এবং মূল্যায়নের আদেশের কারণে এটি আমার কম্পিউটারে কাজ করে না। আমাদের অবশ্যই একটি সংকলক খুঁজে পাওয়া উচিত যা পাশাপাশি খেলবে।
mIllIbyte

ওহ, আমি এটি কেবল আদর্শের উপর পরীক্ষা করেছি এবং এটি দুর্দান্ত কাজ করেছে। কেমন হয় এই:a[99],c,m;main(d){for(;~c;m|=c^d&&a[d=c]++)c=getchar();putchar(48+!m);}
xsot

1

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

f l=(==)=<<scanl1 min$(<$>l).(==)<$>l

লুই মেন্দোর এমএটিএল উত্তরের মতো একই পদ্ধতির ব্যবহার করে : প্রতিটি প্রবেশের জন্য একটি ভেক্টর তৈরি করে যা সূচকগুলি সমান করে এবং পরীক্ষাটি ক্রমবর্ধমান ক্রমে সাজানো হয় কিনা তা পরীক্ষা করে।

(<$>l).(==)<$>lএর সংক্ষিপ্ত সংস্করণ [map(==a)l|a<-l]। ফাংশন (<$>l).(==)যে সময় লাগে aকরার map(==a)lসম্মুখের ম্যাপ করা হয় l

scanl1 minসংক্ষিপ্ততম ক্ষুদ্রতম উপাদানগুলি গ্রহণ করে l, যা কেবল lবিপরীত-বাছাই করা থাকলে মূলটির সমান হয় । (==)=<<এই অপারেশনের অধীনে তালিকাটি প্রকৃতপক্ষে আক্রমণকারী কিনা তা পরীক্ষা করে।


একটি ভিন্ন পুনরাবৃত্তি কৌশল 40 বাইট দিয়েছে:

f(a:b:t)=f(b:t)>(elem a t&&a/=b)
f _=1>0

এটি প্রতিটি প্রত্যয় পরীক্ষা করে দেখেছে যে এর প্রথম উপাদানটি বাকী অংশে উপস্থিত হয় না, তা ক্ষমা করে দেয় যেখানে প্রথম দুটি উপাদান একটি সংলগ্ন ব্লকের অংশ হিসাবে সমান are


1

র‌্যাকেট, 53 বাইট

বোবা, সহজ সংস্করণ।

(λ(s)(let([s(string->list s)])(eq?(sort s char<?)s)))

Ungolfed:

(define (lame-all-together s)
  (let ([s (string->list s)])
    (eq? (sort s char<?) s)))

র‌্যাকেট, 86 বাইট

এটি করার আরও কার্যকরী উপায় সম্পর্কে @ xnor এর মন্তব্যটি বাস্তবায়ন করার সংস্করণ এখানে ।

(λ(s)(let([s(string->list(regexp-replace#px"(.)\\1+"s"\\1"))])(eq?(sort s char<?)s)))

Ungolfed:

(define (all-together s)
    (let ([s (string->list (regexp-replace #px"(.)\\1+" s "\\1"))])
      (eq? (sort s char<?) s )))

ঠিক আছে, এটি আসলে sortফাংশন থেকে গণনার ওজন বদল করতে পারে regexp-replaceতবে এটি একটি আকর্ষণীয় সমাধান ছিল। মূলত, এটি প্রথমে নকল অক্ষরগুলির রানগুলি সরিয়ে দেয় ( এখানে দেখুন ), তারপরে পরীক্ষা করুন যদি অবশিষ্ট দৈর্ঘ্য -1 রানগুলি সাজানো ফ্যাশনে থাকে tests


1

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

-peপরিবর্তে 19, যোগ 1 -e

$_=!/(.)(?!\1).+\1/

1

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 18 বাইট

Gather@#==Split@#&

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

Gatherঅভিন্ন উপাদানগুলির সাবলিস্টগুলিতে একটি তালিকা জড়ো করে এবং Splitধারাবাহিক অভিন্ন উপাদানের সাবলিস্টগুলিতে একটি তালিকা বিভক্ত করে। তারা যদি একই মান দেয় তবে এবং যদি প্রতিটি মান কেবল একটি সংকীর্ণ ব্লকে প্রদর্শিত হয়।



0

জাপট , 9 বাইট

ò¦ mÌ
eUâ

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


ব্যাখ্যা

          :Implicit input of string U             :e.g., "8884443334"
ò¦        :Split on inequality                    :["888","444","333","4"]
   mÌ     :Map and return the last digit of each  :["8","4","3","4"]
\n        :Assign to U
  Uâ      :Remove duplicates                      :["8","4","3"]
e         :Test for equality with U               :false
          :Implicit output of result

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