একটি স্ট্রিংয়ের বিস্ফোরিত দর্শন


39

আপনি কি সেই বিস্ফোরিত-দর্শন চিত্রগুলি পছন্দ করেন না যেখানে কোনও মেশিন বা বস্তুকে তার ক্ষুদ্রতম টুকরোতে আলাদা করা হয়?

এখানে চিত্র বর্ণনা লিখুন

একটি স্ট্রিং যে এটি করা যাক!

চ্যালেঞ্জ

একটি প্রোগ্রাম বা ফাংশন লিখুন যে

  1. কেবল মুদ্রণযোগ্য ASCII অক্ষরযুক্ত একটি স্ট্রিং ইনপুট করে ;
  2. স্ট্রিংটিকে ফাঁকা স্থান সমান অক্ষরের গ্রুপগুলিতে বিচ্ছিন্ন করে দেয় (স্ট্রিংয়ের "টুকরা");
  3. গ্রুপগুলির মধ্যে কিছু বিভাজক সহ কোনও সুবিধাজনক বিন্যাসে এই দলগুলিকে আউটপুট দেয় ।

উদাহরণস্বরূপ, স্ট্রিং দেওয়া

Ah, abracadabra!

আউটপুট নিম্নলিখিত গ্রুপ হবে:

!
,
একজন
AAAAA
বেড এন্ড ব্রেকফাস্ট
গ
ঘ
জ
RR

আউটপুটে প্রতিটি গ্রুপে ফাঁকা স্থান সরিয়ে সমান অক্ষর থাকে। একটি নতুন লাইন গ্রুপগুলির মধ্যে বিভাজক হিসাবে ব্যবহৃত হয়েছে। নীচে অনুমোদিত ফর্ম্যাটগুলি সম্পর্কে আরও।

বিধি

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

আপনি ধরে নিতে পারেন ইনপুটটিতে কমপক্ষে একটি অ-স্থান অক্ষর রয়েছে

আউটপুট হওয়া উচিত অক্ষর (ইনপুট ASCII কোড মানে হয় এমনকি যদি)। গোষ্ঠীগুলির মধ্যে একটি দ্ব্যর্থহীন বিভাজক থাকতে হবে, ইনপুটটিতে প্রদর্শিত হতে পারে এমন কোনও স্থান-নির্ধারিত অক্ষরের চেয়ে আলাদা।

যদি আউটপুটটি ফাংশন রিটার্নের মাধ্যমে হয় তবে এটি একটি অ্যারে বা স্ট্রিং বা অক্ষরের অ্যারে বা একই ধরণের কাঠামো হতে পারে। সেক্ষেত্রে কাঠামোটি প্রয়োজনীয় বিচ্ছেদ সরবরাহ করে।

প্রতিটি গ্রুপের অক্ষরের মধ্যে একটি বিভাজক is চ্ছিক । যদি একটি থাকে তবে একই নিয়মটি প্রয়োগ করা হয়: এটি কোনও ফাঁকা স্থান নয় যা ইনপুটটিতে উপস্থিত হতে পারে appear এছাড়াও, এটি গ্রুপগুলির মধ্যে ব্যবহৃত একই বিভাজক হতে পারে না।

তা ছাড়া, বিন্যাসটি নমনীয়। এখানে কিছু উদাহরন:

  • গ্রুপগুলি নতুন লাইনের দ্বারা স্ট্রিং পৃথক করা যেতে পারে, যেমন উপরে দেখানো হয়েছে।

  • গোষ্ঠীগুলি কোনও অ-এসসিআইআই অক্ষর দ্বারা পৃথক করা যেতে পারে, যেমন ¬। উপরের ইনপুটটির আউটপুটটি স্ট্রিং হবে:

    !¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
    
  • গ্রুপগুলি n > 1 স্পেস দ্বারা পৃথক করা যেতে পারে (এমনকি এন পরিবর্তনশীল হলেও ), প্রতিটি গ্রুপের মধ্যে একটি একক স্পেস দ্বারা পৃথক পৃথক অক্ষর:

    !  ,    A   a a a a a    b b  c       d   h  r r
    
  • আউটপুটটি কোনও ফাংশন দ্বারা ফিরে আসা অ্যারের বা স্ট্রিংগুলির তালিকাও হতে পারে:

    ['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
    
  • বা চর অ্যারেগুলির একটি অ্যারে:

    [['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
    

নিয়ম অনুসারে বিন্যস্ত ফর্ম্যাটগুলির উদাহরণ:

  • কমা বিভাজক ( !,,,A,a,a,a,a,a,b,b,c,d,h,r,r) হিসাবে ব্যবহার করা যায় না , কারণ ইনপুটটিতে কমা থাকতে পারে।
  • গোষ্ঠীগুলির মধ্যে বিভাজক ( !,Aaaaaabbcdhrr) বিভক্ত করতে বা গোষ্ঠীগুলির মধ্যে এবং গোষ্ঠীগুলির মধ্যে একই বিভাজক ব্যবহার করার জন্য এটি গ্রহণযোগ্য নয় ! , A a a a a a b b c d h r r

গ্রুপগুলি আউটপুটে যে কোনও ক্রমে উপস্থিত হতে পারে । উদাহরণস্বরূপ: বর্ণানুক্রমিক ক্রম (উপরের উদাহরণগুলির মতো), স্ট্রিংয়ে প্রথম উপস্থিতির ক্রম, ... ক্রমটি সামঞ্জস্যপূর্ণ বা এমনকি নির্বিচারক হওয়া দরকার না।

নোট করুন যে ইনপুটটিতে নতুন লাইন অক্ষর থাকতে পারে না এবং Aএবং aবিভিন্ন অক্ষর (গ্রুপিং কেস-সেন্ডেটিভ )।

বাইটস মধ্যে সংক্ষিপ্ত কোড।

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

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

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

    আহ, অবাকদব্র!
    !
    ,
    একজন
    AAAAA
    বেড এন্ড ব্রেকফাস্ট
    গ
    ঘ
    জ
    RR
    
  • পরীক্ষার কেস 2:

    \ ণ / \ ণ / \ ণ /
    ///
    \\\
    OOO
    
  • পরীক্ষার কেস 3:

    একজন মানুষ, পরিকল্পনা, খাল: পানামা!
    !
    ,,
    :
    একজন
    পি
    পামেল পিয়ালকে কি বলে
    গ
    করব
    মিমি
    NNNN
    পি
    
  • পরীক্ষার কেস 4:

    "আপনি কীভাবে সেই কৌশলটি করেন তা আমাকে দেখান, যে আমাকে চিৎকার করে তোলে" তিনি বলেছিলেন
    ""
    ,
    এস
    AAAAA
    সিসি
    DD
    eeeeeee
    hhhhhh
    আ
    কে কে
    MMMM
    এন
    ooooo
    RR
    এখন কি করা উচিত
    tttttt
    তোমার দর্শন লগ করা
    WW
    Y
    

1
আমরা যদি বিভাজক হিসাবে "¬" এর মতো নন-এএসসিআইআই চিহ্ন ব্যবহার করি তবে এটি কি 1 বাইট হিসাবে গণনা করা যায়?
লিকি নুন

5
@ লেকিউন নং, এটি যথারীতি উত্স কোডের জন্য ব্যবহৃত এনকোডিংয়ের উপর নির্ভর করে এটি গণনা করা হবে
লুইস মেন্ডো

শেষের গ্রুপটির পরে কি কোনও ট্রেইলিং নিউলাইন গ্রহণযোগ্য?
জাস্টিনএম - মনিকা পুনরায় ইনস্টল করুন

আউটপুট একটি নেতৃস্থানীয় নতুন লাইন গ্রহণযোগ্য?
ডিজেএমসিএমহেম

1
@ রোহানঝুনঝুনওয়ালা ভাল হয়েছে! :-) হ্যাঁ, বিভাজক হিসাবে বেশ কয়েকটি নতুন লাইন ঠিক আছে
লুইস মেন্ডো

উত্তর:


11

জেলি , 5 বাইট

ḟ⁶ṢŒg

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

এটি একটি অ্যারে ফিরিয়ে দেয়, ঠিক এটি যখন এটি STDOUT এ মুদ্রিত হয় তখন বিভাজক চলে যায়।

এই প্রকৃতপক্ষে একটি ফাংশন যে বলা যেতে পারে যেমন (জেলি মধ্যে, প্রতিটি লাইনে একটি ফাংশন)।

ḟ⁶ṢŒg
ḟ⁶      filter out spaces
  Ṣ     sort
   Œg   group

23

পাইথন 3.5+, 77 46 44 41 বাইট

lambda s:[a*s.count(a)for a in{*s}-{' '}]

বেশ সহজ. স্ট্রিংয়ের অনন্য অক্ষরগুলিকে সেটে রূপান্তরিত করে (পাইথন 3.5 এর বর্ধিত পুনরাবৃত্তিযোগ্য আনপ্যাকিং ব্যবহার করে), তারপরে বিস্ফোরিত ডায়াগ্রামগুলি তৈরির জন্য একটি তালিকা উপলব্ধি ব্যবহার করে প্রতিটি অক্ষরের সাথে স্ট্রিংয়ের সংখ্যার বারটি গণনা করে str.count। সেটগুলি সরিয়ে দিয়ে আমরা স্পেসগুলি ফিল্টার আউট করি।

আউটপুট ক্রম রান থেকে চালানোর জন্য পৃথক হতে পারে; সেটগুলি অর্ডারযুক্ত নয়, সুতরাং তাদের আইটেমগুলি যে ক্রমে ক্রিয়াকলাপ করা হবে, এবং এইভাবে এই উত্তরের ফলাফলগুলি গ্যারান্টিযুক্ত হতে পারে না।

এটি ল্যাম্বডা এক্সপ্রেশন; এটি ব্যবহার করার জন্য, প্রিফিক্স lambdaসঙ্গে f=

আইডিয়নে চেষ্টা করে দেখুন! আইডিয়ন পাইথন ৩.৪ ব্যবহার করে, যা পর্যাপ্ত নয়।

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

>>> f=lambda s:[a*s.count(a)for a in{*s}-{' '}]
>>> f('Ah, abracadabra!')
[',', 'A', 'aaaaa', 'd', '!', 'bb', 'h', 'c', 'rr']

সংরক্ষিত 3 বাইট @ শুকিকে ধন্যবাদ!


3
1 কে অভিনন্দন!
লুইস মেন্ডো

2
পাইথন সালে> 3.5 আপনি কি করতে পারেন {*s}জন্য set(s)
shooqie

11

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

O`.
!`(\S)\1*

বাছাই করা খুব সহজ (এটি একটি বিল্টিন), এটি 9 টি বাইট লাগে এমন অক্ষরগুলি পৃথক করে। এটি অনলাইন চেষ্টা করুন!

প্রথম লাইনটি Oরেগেক্সের সমস্ত ম্যাচ আর্টস করে .(যা প্রতিটি চরিত্র), আমাদের দিচ্ছে !,Aaaaaabbcdhrr

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


কি করে! করেন?
ডাউনগোট


8

পার্ল 6 , 28 বাইট

*.comb(/\S/).Bag.kv.map(*x*)

মনে রাখবেন যে হ্যাশ বা সেট এর মতো ব্যাগ আনর্ডার্ড করা হয়েছে সুতরাং ফলাফলের ক্রম গ্যারান্টিযুক্ত নয়।

ব্যাখ্যা:

# Whatever lambda 「*」


# grab the characters
*.comb(
  # that aren't white-space characters
  /\S/
)
# ("A","h",",","a","b","r","a","c","a","d","a","b","r","a","!")


# Turn into a Bag ( weighted Set )
.Bag
# {"!"=>1,","=>1,"A"=>1,"a"=>5,"b"=>2,"c"=>1,"d"=>1,"h"=>1,"r"=>2}


# turn into a list of characters and counts
.kv
# ("!",1,",",1,"A",1,"a",5,"b",2,"c",1,"d",1,"h",1,"r",2)


# map over them 2 at a time
.map(
  # string repeat the character by the count
  * x *
)
# ("!",",","A","aaaaa","bb","c","d","h","rr")


7

পাইথ,।

.gk-zd

এটি এখানে চেষ্টা করুন বা একটি টেস্ট স্যুট চালান ।

খুব সহজ, -zdইনপুট থেকে ফাঁকা স্থানগুলি সরিয়ে দেয় এবং .gkপ্রতিটি অবশিষ্ট উপাদানকে এর মান অনুসারে ভাগ করে দেয়। দুর্ভাগ্যক্রমে, আমি স্বতঃপূর্ণ ভেরিয়েবলগুলি ব্যবহার করার কোনও উপায় খুঁজে পাইনি। দ্রষ্টব্য যে আউটপুটটি পাইথন স্ট্রিং হিসাবে দেখানো হয়েছে, সুতরাং নির্দিষ্ট অক্ষরগুলি (পড়ুন: ব্যাকস্ল্যাশগুলি) এড়ানো যায়। আপনি যদি এটি আরও পঠনযোগ্য হতে চান jতবে কোডের শুরুতে একটি যুক্ত করুন ।


7

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

f s=[filter(==c)s|c<-['!'..],elem c s]

মূলত নিমির সমাধান তবে স্পষ্টভাবে কেবল স্ট্রিংয়ে উপস্থিত অক্ষরগুলি পরীক্ষা করা হচ্ছে।


6

2sable , 7 বাইট

কোড:

Úð-vyÃ,

ব্যাখ্যা:

Ú       # Uniquify the string, aabbcc would result into abc
 ð-     # Remove spaces
   vy   # For each character...
     Ã  #   Keep those in the string, e.g. 'aabbcc', 'a' would result into 'aa'
      , #   Pop and print with a newline

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


3
ডেনিসের মতো এটি মোটেও শোনাচ্ছে না :
লুইস মেন্ডো

6

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

s=>[...s].sort().join``.match(/(\S)\1*/g)

এটি কি একই " "সাথে ফিরে আসা অ্যারেতেও কোনও অ্যান্ট্রি তৈরির কারণ হবে না ? এটি অনুমোদিত কিনা তা নিশ্চিত নয়
মান কালি

@ ভ্যালিউইঙ্ক বাহ, আমি যখন এটি শুরু করেছিলাম সে সম্পর্কে আমি ভেবেছিলাম তবে তাৎক্ষণিকভাবে ভুলে গিয়েছিলাম। এখনই স্থির।
নীল

উম্মু, join()ডাবল ব্যাকটিকসের সাথে কীভাবে ডাকা হচ্ছে?
তেজস কালে

1
@ টেজাসকেল এটি ইএস 6 টেম্পলেট স্ট্রিং। আপনি যখন কোনও পদ্ধতিটিকে টেমপ্লেট স্ট্রিংয়ের উপসর্গ করেন, তখন এটি টেমপ্লেটটিকে অ্যারে হিসাবে ব্যবস্থায় পাস করে, সুতরাং এই ক্ষেত্রে এটি কলিং শেষ করে .join([''])joinতারপরে এটিকে (খালি) স্ট্রিংয়ে রূপান্তর করে এবং অ্যারের উপাদানগুলিতে যোগ দিতে এটি ব্যবহার করে। সমস্ত পদ্ধতি তাদের পরামিতিগুলিকে স্ট্রিংয়ে রূপান্তর করে না, তবে এই কৌশলটি তাদের পক্ষে কার্যকর।
নীল

6

ব্র্যাচল্যাগ , 14 7 বাইট

ফ্যাটালাইজকে 7 বাইট ধন্যবাদ

:@Sxo@b

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

:@Sxo@b
:@Sx     remove spaces
    o    sort
     @b  group

1
(স্পেস) xঅপসারণ করতে 7 বাইট ব্যবহার করছে @Sআমি বিশ্বাস করি যে এই আউটপুট ফর্ম্যাটটি (স্ট্রিংগুলির তালিকা) বৈধ
ফ্যাটালাইজ

5

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

f x=[v:w|d<-['!'..],v:w<-[filter(==d)x]]

ব্যবহারের উদাহরণ: f "Ah, abracadabra!"-> ["!",",","A","aaaaa","bb","c","d","h","rr"]

প্যাটার্নটি v:wকমপক্ষে একটি উপাদানের সাথে কেবল তালিকার সাথে মেলে, সুতরাং ইনপুটটিতে না থাকা সমস্ত অক্ষর উপেক্ষা করা হবে।

এছাড়াও 40 বাইট:

import Data.List
group.sort.filter(>' ')

@ থ্রিএফএক্স: তবে তাও groupএসেছে Data.List। যাইহোক, আমি মনে করি এই বাক্য ghciগঠনটি কেবল এবং এর জন্য REPL দরকার, সুতরাং এটি নিজস্ব নিজস্ব একটি ভাষা । আমি স্ট্যান্ডার্ড হাস্কেলের সাথে লেগে থাকতে চাই
নিমি

4

রুবি, 41 + 1 = 42 বাইট

-nপতাকা জন্য +1 বাইট ।

gsub(/(\S)(?!.*\1)/){puts$1*$_.count($1)}

স্টিডিনে ইনপুট নেয়, যেমন:

$ echo 'Ah, abracadabra!' | ruby -ne 'gsub(/(\S)(?!.*\1)/){puts$1*$_.count($1)}'
A
h
,
c
d
bb
rr
aaaaa
!

4

সি # 125 98 বাইট

using System.Linq;s=>s.GroupBy(c=>c).Where(g=>g.Key!=' ').Select(g=>new string(g.Key,g.Count())));

ব্যাখ্যা

//Using anonymous function to remove the need for a full signature 
//And also allow the implicit return of an IEnumerable
s =>

    //Create the groupings
    s.GroupBy(c => c)

    //Remove spaces
    .Where(g=> g.Key!=' ')

    //Generate a new string using the grouping key (the character) and repeating it the correct number of times
    .Select(g => new string(g.Key, g.Count()));
  • @ লেথলকোডারকে ধন্যবাদ জানায় যিনি কোনও বেনামি ফাংশনটি ব্যবহারের পরামর্শ দিয়েছিলেন, যা আমাকে ToArrayকলটি সরিয়ে ফেলতে এবং পুরোপুরি স্পষ্টভাবে একটি আইমনামেবল ফিরিয়ে দিয়েছিল যা সম্মিলিতভাবে 27 বাইট সংরক্ষণ করে

আপনি একটি এটা কম্পাইল 18 বাইট সংরক্ষণ করতে পারবেন (যদি আমি সঠিকভাবে গণনা করা হয়েছে) Func<string, string[]>অর্থাতs=>s.GroupBy....
TheLethalCoder

@ লেলথল কোডার আপনি কি নিশ্চিত যে কোনও ফাংশনের জায়গায় এটি গ্রহণযোগ্য, আমি সর্বদা এটি সম্পর্কে সতর্ক থাকি কারণ এটি কার্যকর করতে সক্ষম হতে বেশ কিছুটা অতিরিক্ত বয়লারপ্লেট যুক্ত করেছে এবং লিনকটি এটির ব্যবহারের প্রয়োজন হিসাবে যুক্তি দিয়ে ঠিক মনে হচ্ছে ... ভাল।
জাস্টিনএম - মনিকা

আমি যেখানে এটি করি সেখানে একটি সাম্প্রতিক উদাহরণ এখানে ... কোডগল্ফ.স্ট্যাকেক্সেঞ্জারএইএ / 91075/38550 এটি আপনার সমস্ত বয়লারপ্লেট সরিয়ে ফেলবে, যতক্ষণ না ফাংশনগুলি অনুমোদিত হয়
TheLethalCoder

@ লেথলকোডার ঠিক আছে আমার পক্ষে যথেষ্ট ভাল। :) এটি আমাকে
ToArray

4

আর, 198 189 96 95 বাইট

for(i in unique(a<-strsplit(gsub(" ","",readline()),"")[[1]]))cat(rep(i,sum(a==i)),"\n",sep="")

অসমাপ্ত:

a<-strsplit(gsub(" ","",readline()),"")[[1]] #Takes the input from the console

for(i in unique(a)) #loop over unique characters found in variable a

cat(rep(i,sum(a==i)),"\n",sep="") # print that character n times, where n was the number of times it appeared

\জড়িত থাকার সময় এই সমাধানটি পুরোপুরি কাজ করে না ।
এখন এটা !

১০২ বাইট গল্ফ করার জন্য আপনাকে @ জেডিএলকে অনেক ধন্যবাদ !


@ জেডিএল: মন্তব্যগুলিতে সম্পাদনার পরামর্শ দিন। আপনার পরিবর্তনগুলি সত্যিই আকর্ষণীয়, তবে অন্য কারও কোডটি এর মতো পরিবর্তন করা অসম্পূর্ণ অভদ্র।
ফ্রিডরিক

1
এর জন্য ক্ষমা চাইছি, তবে আমার তখন 50 খ্যাতি ছিল না এবং মন্তব্য করতে পারিনি। ভবিষ্যতে কি করবে!
জেডিএল

@ জেডিএল: যথেষ্ট ফর্সা!
ফ্রিডরিক

কোনও ফাংশনের অভ্যন্তরে ভেরিয়েবল নির্ধারণের চেষ্টা করুন: for(i in unique(a=strsplit(gsub(" ","",readline()),"")[[1]]))cat(rep(i,sum(a==i)),"\n",sep="")- 2 বাইট সংরক্ষণ করে sa
আন্দ্রে কোস্টায়রকা

@ AndreïKostyrka: এটি এই ফর্মটিতে বাইটস সংরক্ষণ করে না কারণ আপনাকে বন্ধনীর মধ্যে পুরো a = স্টারস্প্লিট (...) অংশ রাখতে হবে: মূলত a -2 + 2 পার্থক্য করে। তবে ব্যবহার <-করলে 1 বাইট সাশ্রয় হবে!
ফ্রিডরিক

4

সুইফট, 105 91 বাইট

14 বাইটের জন্য @ নোবডিনাডাকে ধন্যবাদ :)

হ্যাঁ, আমি সুইফ্টে বেশ নতুন ...

func f(a:[Character]){for c in Set(a){for d in a{if c==d && c != " "{print(c)}}
print("")}}

একটি গ্রুপের মধ্যে অক্ষরগুলি একটি একক নিউলাইন দ্বারা পৃথক করা হয়। গ্রুপ দুটি নতুন লাইন দ্বারা পৃথক করা হয়।


ক এর [Character]পরিবর্তে ইনপুট নিয়ে আপনি 13 বাইট সংরক্ষণ করতে পারেন String, কারণ নিয়মগুলি বলে "ইনপুটটি স্ট্রিং বা চররের অ্যারে হওয়া উচিত।" এছাড়াও, ন্যায়বিচারের print("")সাথে প্রতিস্থাপন করা যেতে পারে print()
নোবিনাডা - মনিকা

@ নোবডিনাডা printযুক্তি ছাড়াই কোনও কারণে কাজ করে নি তবে [Character]পরামর্শটি বেশ শক্ত। ধন্যবাদ!
সমৃদ্ধ

3

অক্টাভা , 61 বাইট

@(x)mat2cell(y=strtrim(sort(x)),1,diff(find([1 diff(+y) 1])))

এটি একটি anoymous ফাংশন যা ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং স্ট্রিংগুলির একটি সেল অ্যারে আউটপুট করে।

আইডিয়নে চেষ্টা করুন

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

  • sortইনপুট স্ট্রিং বাছাই। বিশেষত, স্পেসগুলি শুরুতে হবে।
  • strtrim নেতৃস্থানীয় স্থানগুলি সরিয়ে দেয়।
  • diff(+y) অক্ষরের মধ্যে ক্রমাগত পার্থক্য গণনা (গোষ্ঠী সীমানা সনাক্ত করতে) ...
  • ... সুতরাং diff(find([1 diff(+y) 1])গ্রুপ আকারের একটি ভেক্টর দেয়।
  • mat2cell তারপরে সাজানো স্ট্রিংগুলি সেই আকারগুলির সাথে খণ্ডগুলিতে বিভক্ত করে।


3

> <> , 49 বাইট

i:0(?v
84}0~/&{!*
v!?: <}/?=&:&:<
>&1+&}aol1-?!;^

আউটপুটটিতে খুব প্রশস্তভাবে অপচয়যোগ্য, তবে আমি ধরে নিচ্ছি নিয়মগুলির বিন্যাসের প্রেক্ষিতে এখনও অনুমোদিত

ব্যাখ্যা:

i:0(?v           Collects text from input
84}0~/&{!*       adds 32 (first ascii starting at space) to register and 0 to stack
v!?: <}/?=&:&:<  checks all characters to the current register, if equal:
       o         prints the character and continues looping
>&1+&}aol1-?!;^  when all characters are checked, adds 1 to register, prints a newline,
                 checks the stack length to halt the program if 0, and starts looping again

কিছু জিনিস বেশ শক্ত করে ফিট করুন এমনকি কিছু ফাংশন ঘুরে দেখার জন্য জাম্প ব্যবহার করে যাতে আমি পয়েন্টারটি উল্লম্বভাবে চালাতে পারি।

মূলত এটি প্রতিটি ASCII অক্ষরকে তার নিজস্ব লাইনে রাখে এবং যদি সেই অক্ষরের কোনও উপস্থিতি না থাকে তবে লাইনটি ফাঁকা থাকবে

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

সম্পাদনা করুন: আমি ভুল ছিলাম কোডে একটি ত্রুটি ছিল যা ইনপুটটিতে কোনও জায়গা থাকলে এটি কখনই সম্পূর্ণ করতে পারে না


3

পাইথ, 5 বাইট

.gksc

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

পাইথন স্ট্রিং হিসাবে ইনপুট নেয় (অর্থাত উদ্ধৃতিতে আবৃত, পালানো উদ্ধৃতি এবং প্রয়োজনীয় হিসাবে স্ল্যাশ)।

ব্যাখ্যা:

    c    Split (implied) input on whitespace
   s     Sum together
.gk      Group by value

আপনি যদি ইনপুটটিতে কমপক্ষে একটি জায়গার গ্যারান্টি দেন তবে একটি 4-বাইট সমাধান রয়েছে:

t.gk

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

ব্যাখ্যা:

 .gk (Q)  groups the characters in the string by their value
           this sorts them by their value, which guarantees that spaces are first
t         Remove the first element (the spaces)

3

পাওয়ারশেল v2 +, 44 বাইট

[char[]]$args[0]-ne32|group|%{-join$_.Group}

$args[0]কমান্ড-লাইন আর্গুমেন্ট আক্ষরিক স্ট্রিং হিসাবে ইনপুট নেয় । কাস্ট করে একটি হিসাবে char-array, এবং ব্যবহারের -nOT eস্থান (হওয়া ASCII উঠিয়ে ফেলা গণদেবতা অপারেটর 32)। এটি কাজ করে কারণ ingালাইয়ের উচ্চতর অর্ডার অগ্রাধিকার রয়েছে এবং যখন কোনও অ্যারে বাম-হাত অপারেটর হিসাবে ডান-হাত হিসাবে একটি স্কেলারের সাহায্যে ব্যবহৃত হয়, এটি ফিল্টারের মতো কাজ করে।

আমরা সেই অক্ষরের অ্যারেটি পাস করি Group-Objectযা এটি যা বলে ঠিক তা করে। নোট করুন যেহেতু আমরা অক্ষরগুলি পার করছি , স্ট্রিং নয়, এটি কেস-সংবেদনশীলতার সাথে সঠিকভাবে দলবদ্ধ করে।

এখন, আমরা একটি কাস্টম অবজেক্ট (গুলি) পেয়েছি যার গোষ্ঠীর নাম, গণনা ইত্যাদি রয়েছে। আমরা যদি কেবল প্রিন্ট করি যে আমাদের বহিরাগত আউটপুট থাকবে of সুতরাং, আমরা একটি লুপ মধ্যে যারা পাইপ প্রয়োজন |%{...}এবং প্রতিটি পুনরাবৃত্তির একটি একক স্ট্রিং মধ্যে একসঙ্গে। সেই ফলস্বরূপ স্ট্রিংগুলি পাইপলাইনে রেখে গেছে এবং আউটপুট প্রোগ্রামের সমাপ্তিতে জড়িত।-join.Group

উদাহরণ

PS C:\Tools\Scripts\golfing> .\exploded-view-of-substrings.ps1 'Programming Puzzles and Code Golf'
PP
rr
ooo
gg
aa
mm
i
nn
u
zz
ll
ee
s
dd
C
G
f


2

প্রসেসিং, 109 বাইট

void s(char[] x){x=sort(x);char l=0;for(char c:x){if(c!=l)println();if(c!=' '&&c!='\n'&&c!='\t')print(c);l=c;}}

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


2

জাভাস্ক্রিপ্ট (বহিরাগত গ্রন্থাগার ব্যবহার করে - গণনাযোগ্য) ( 78 67 বাইট)

 n=>_.From(n).Where(y=>y!=' ').GroupBy(x=>x).WriteLine(y=>y.Write())

লিবের লিঙ্ক: https://github.com/mvegh1/ গণনাযোগ্য

কোডের ব্যাখ্যা: এটিই করা হয়েছিল যা করা সম্ভব হয়েছিল! স্ট্রিংটি লাইব্রেরিতে লোড করুন, এটি এটিকে একটি চর অ্যারে রূপান্তর করে। সাদা স্থানের এন্ট্রিগুলি ফিল্টার করুন। চর দ্বারা গ্রুপ। প্রতিটি গ্রুপ একটি নির্দিষ্ট লাইনে লিখুন। সেই ভবিষ্যদ্বাণীটি ডিলিমিটার ছাড়াই বর্তমান গোষ্ঠীর সমস্ত উপাদানকে স্ট্রিংয়ে যোগ দিতে বলে।

এখানে চিত্র বর্ণনা লিখুন



2

পার্ল 6, 48 47 45

slurp.comb.Bag.kv.map:{$^a.trim&&say $a x$^b}

উন্নতির জন্য manatwork ধন্যবাদ।


1
কোনও বড় উন্নতি নয়, তবে $a.trimএটি অবস্থার জন্য এটি করছে বলে মনে হচ্ছে।
manatwork

লজিক্যাল অপারেটর এখনো, তাই তাদের চারপাশে স্পেস প্রয়োজন মনে $^a.trim&&say $a x$^bকাজ করে। (বাইট দ্বারা ইঙ্গিতগুলি বাইট যোগ করার জন্য দুঃখিত, তবে পার্ল 6 এ এটি আমার প্রথম চেষ্টা।)
manatwork

ছোট্ট টাইপো, আপনি দুর্ঘটনাক্রমে উদ্বোধনটি সরিয়ে দিয়েছেন {
মান্যাটওয়ার্ক

1

রুবি, 46 বাইট

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

->s{(s.chars-[' ']).uniq.map{|c|c*s.count(c)}}

আমার আসল পুরো প্রোগ্রাম সংস্করণ, nপতাকা যুক্ত করার পরে 48 বাইট :

p gsub(/\s/){}.chars.uniq.map{|c|c*$_.count(c)}

আপনি প্রতিস্থাপন করতে পারেন .count(c)সঙ্গে .count c?
সাইয়েস

@ কিউস নো, কারণ *অপারেটর নিকটে উপস্থিত তাই পার্সার অভিযোগ করবে।
মূল্য কালি

s.chars- [''] | [[বন্ধনীগুলির ভিতরে ইউনিক এড়ানো হবে
জিবি

@ জিবি এটি করবে তবে আমরা যদি এটির শৃঙ্খলা বেঁধে রাখি mapতবে এটির জন্য অতিরিক্ত প্যারেন দরকার, এবং ((s.chars-[' '])|[]).mapএকই সংখ্যক অক্ষর রয়েছে (s.chars-[' ']).uniq.map। এবং অন্যটি, অনন্য অক্ষরগুলি পরীক্ষা করার জন্য স্বল্পতম উপায় (রেইগেক্সের মাধ্যমে) ইতিমধ্যে @ জর্দান অন্য উত্তরে কভার করেছেন
মান কালি

এটি বন্ধনীগুলির ভিতরে কাজ করে, আপনার অতিরিক্ত বন্ধনী প্রয়োজন নেই কারণ '-' এর অগ্রাধিকার বেশি।
জিবি

1

পাইথন, 107

ল্যাম্বদা দ্বারা সংক্ষিপ্ত করা যেতে পারে, তবে পরে

x=sorted(input())
i=0
while i<len(x):x[i:]=['  '*(x[i]!=x[i-1])]+x[i:];i-=~(x[i]!=x[i-1])
print("".join(x))

1

সিজেম, 10 বাইট

{S-$e`::*}

একটি নামবিহীন ব্লক যা স্ট্যাকের উপরে স্ট্রিংটি প্রত্যাশা করে এবং স্ট্রিংয়ের তালিকার সাথে এটি প্রতিস্থাপন করে।

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

ব্যাখ্যা

S-  Remove spaces.
$   Sort.
e`  Run-length encode, gives pairs [R C], where R is the run-length and
    C is the character.
::* Repeat the C in each pair R times.

1

কমন লিস্প, 123

(lambda(s &aux(w(string-trim" "(sort s'char<))))(princ(elt w 0))(reduce(lambda(x y)(unless(char= x y)(terpri))(princ y))w))

Ungolfed:

(lambda (s &aux (w (string-trim " " (sort s 'char<))))
  (princ (elt w 0))
  (reduce
    (lambda (x y) 
      (unless (char= x y) (terpri))
      (princ y))
  w))

সর্বাধিক গল্ফ বান্ধব ভাষা নয়। এটি সম্ভবত মুদ্রণের স্ট্রিংয়ের পরিবর্তে তালিকার তালিকার তালিকায় ফিরে যেতে পারে।


1

ইমাস, 36 টি কীস্ট্রোক

C-SPACE C-EM-xsort-rTABRETURN.RETURN.RETURNC-AC-M-S-%\(\(.\)\2*\)RETURN\1C-QC-JRETURN!

ফলাফল

A man, a plan, a canal: Panama! ->

!
,,
:
A
P
aaaaaaaaa
c
ll
mm
nnnn
p

ব্যাখ্যা

  1. C-SPACE C-E
  2. M-x sort-rTAB RETURN .RETURN .RETURN
  3. C-A
  4. C-M-S-% \(\(.\)\2*\)RETURN\1 C-Q C-JRETURN !

  1. ইনপুট লাইনটি নির্বাচন করুন;
  2. sort-regexp-fieldsযুক্তি সহ কল করুন .এবং. ;
    • আর্গুমেন্ট # 1: পুনরায় সাজানো রেকর্ডসকে স্ক্রিপাইফাই করা রেকর্ডগুলি সাজানোর জন্য
    • আর্গুমেন্ট # 2: রেকর্ডের মধ্যে রিজেক্সপ স্ক্রিপাইফাইং কী
  3. লাইন শুরুতে ফিরে;
  4. সমস্ত ম্যাচগুলিতে regexp বিকল্প \(\(.\)\2*\)-> প্রয়োগ করুন \1\n
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.