हर किसी को एक दोस्त रखना होगा


11

एक अलग चरित्र एक चरित्र (एक नई रेखा के अलावा) है जिसमें एक ही प्रकार का एक आसन्न चरित्र नहीं है। आसन्न वर्ण बाएं, दाएं ऊपर या नीचे हो सकते हैं, लेकिन विकर्ण नहीं। निम्न पाठ में उदाहरण के लिए Hअलग किया गया है:

Ybb
YH%
%%%%

अन्य सभी वर्ण अलग-थलग नहीं हैं क्योंकि उनमें से प्रत्येक में उसी प्रकार के आसन्न के कम से कम एक अन्य वर्ण हैं।

आपका कार्य एक प्रोग्राम लिखना है जो इनपुट के रूप में एक स्ट्रिंग लेता है और पृथक वर्णों की संख्या निर्धारित करता है।

स्कोरिंग

आपको उत्तर दो मैट्रिक्स द्वारा दिया जाएगा। पहला आपके प्रोग्राम में अलग-थलग वर्णों की संख्या है। आपको इसे कम करने का लक्ष्य रखना चाहिए। दूसरा आपके प्रोग्राम में बाइट्स की संख्या होगी। आपको इसे कम से कम करना चाहिए। कार्यक्रम का आकार पहली कसौटी के लिए एक टाई ब्रेकर के रूप में कार्य करेगा।

अतिरिक्त नियम

  • आपको प्रिंट करने योग्य एएससीआई रेंज पर इनपुट का समर्थन करना चाहिए और साथ ही आपके प्रोग्राम में आपके द्वारा उपयोग किए जाने वाले किसी भी वर्ण का।

  • आप एक पंक्ति विराम को या तो एक नया वर्ण मान सकते हैं या एक पंक्ति के बाद एक नई पंक्ति हो सकते हैं।

  • आप किसी भी उचित प्रारूप में इनपुट ले सकते हैं। इसमें लाइनों की एक सूची शामिल है।

परीक्षण के मामलों

Ybb
YH%
%%%%

1


Aaaab
uuu
yyybbb

2


A

1


qqWWaaww

0


2
क्या एक खाली स्ट्रिंग वैध इनपुट है और यदि ऐसा है तो यह 0 स्कोर करेगा? इसके अलावा इनपुट प्रकार कितना लचीला है? लाइनों की सूची ठीक है?
विस्कह

क्या न्यूक्लियर को अलग किया जा सकता है?
जो किंग

1
@DimChtz क्योंकि यह एक Yनीचे है।
एर्ग आउटफोलर सेप

1
पहली मीट्रिक को किसी भी प्रोग्रामिंग भाषा में दरकिनार किया जा सकता है और प्रत्येक उत्तर में अब 0 अंक है।
जीबी

1
@ जीबी वास्तव में। मुझे लगता है कि इसके restricted-sourceबजाय इसे एक चुनौती में बदलने में देर नहीं हुई है और अलग-थलग पड़े चरित्रों को पूरी तरह से खारिज कर दिया।
अरनुलद

जवाबों:


7

पायथन 2 , 0 ( 350 344 314 309 301 298 291 बाइट्स)

def f(tt):11
def f(tt):
 tt=tt.split('\n')
 r =0#.split('\n')
#r  0#
#for
 for  ii,ll in enumerate(tt):
  for jj,cc in enumerate(ll):
##for+=1-(
    r+=1-(cc in ll[(jj or 2)-1:jj+2:2]    +''.join(ll[jj:
 jj+1]for ll in tt[(ii or 2)-1:ii+2:2]))##+''.join(ll[jj:
#  +1]for 
#print r
 print r
 

इसे ऑनलाइन आज़माएं!

-7 बाइट्स, जो किंग के लिए धन्यवाद



@JoKing धन्यवाद! :)
TFeld

5

स्वच्छ , 0 ( 439 ... 415 बाइट्स)

-11 अर्जन जोहान्सन को धन्यवाद

अंत में एक चुनौती जहां मैं क्लीन के साथ 0 स्कोर कर सकता हूं!
(और आम तौर पर यह स्रोत-लेआउट चुनौतियों पर बुरा है !)

//module 
  module d
import StdEnv,ArgEnv,Data.List,Data.Maybe
import StdEnv,ArgEnv,Data.List,Data.Maybe
Start=sum[1\\i<-l&v<-[0..],_<-i&u<-[0..]|all((<>)(?u v))[?(u-1)v,?(u+1)v,?u(v-1),?u(v+1)]]
Start=sum[1\\i<-l&v<-[0..],_<-i&u<-[0..]|all((<>)(?u v))[?(u-1)v,?(u+1)v,?u(v-1),?u(v+1)]] 
l=mklines[c\\c<-:getCommandLine.[1]]
l=mklines[c\\c<-:getCommandLine.[1]]
?x=mapMaybe(\k=k!?x)o(!?)l
?x=mapMaybe(\k=k!?x)o(!?)l

इसे ऑनलाइन आज़माएं!

TIO module mainपर क्लीन को लागू करने के तरीके के कारण TIO लिंक का उपयोग होता है, लेकिन module dयदि आप TIO के d.iclबजाय फाइल का नाम देते हैं तो यह काम करेगा main.icl

बताई गई पुरानी लाइनों में से एक (नया संस्करण एक अलग क्रम में एक ही बात है):

Start                                       // entry point
 = let                                      // define locals
  l = mklines                               // `l` is argument split at newlines
   [c \\ c <-: getCommandLine.[1]];         // the second command-line arg turned into a [Char]
  ? x y                                     // function ? of coordinate (x,y)
   = mapMaybe                               // if the argument isn't Nothing
    (\k = k!?x)                             // try taking the `x`-th index
    (l!?y)                                  // of the `y`-th index of `l`
  in                                        // in the context of
   sum [                                    // the sum of
    1                                       // the integer one
    \\ i <- l & v <- [0..]                  // for every index in `l`
    , _ <- i & u <- [0..]                   // for every subindex in `l`
    | all (                                 // where all of the second argument
      (<>)(?u v)                            // doesn't equal the first argument
     ) [?(u-1)v, ?(u+1)v, ?u(v-1), ?u(v+1)] // over every adjacent element
   ]

1
का उपयोग नहींlet करता है 11 बाइट्स बचाता है।
अर्जन जोहानसन

@ ØrjanJohansen धन्यवाद! मैंने मॉड्यूल हेडर को भी बदल दिया है क्योंकि हमारे पास एक आसन्न dकाम है
Sepurous

5

जावास्क्रिप्ट (ईएस 6), 0 (154 बाइट्स)

सहेजी गयी 2 4 @ ØrjanJohansen करने के लिए धन्यवाद बाइट्स

स्ट्रिंग के एक सरणी के रूप में इनपुट लेता है।

s  =>
s//=>(s,y,a
.map((s,y,a)=>[...s]
.map((c,x  )=>[...s]
&&//++c,x
 s[x+1]==c|
 s[x-1]==c|
(a[y-1]||0)[x]==c|
(a[y+1]||0)[x]==c||
  i++),i=0)
&&i//),i=

इसे ऑनलाइन आज़माएं!



4

जेली , 0 ( 41 27 25 बाइट्स)

ŒĠạþ`€Ẏ§CẠ€S
ŒĠạþ`€Ẏ§CẠ€S

इसे ऑनलाइन आज़माएं!

लाइनों की सूची के रूप में इनपुट लेता है। कोड में पहली पंक्ति कभी कुछ नहीं करती है और केवल पृथक वर्णों को कम करने के लिए है।

ỴŒĠạþ`€Ẏ§1eⱮCS
Ỵ                 Split the text on newlines.
 ŒĠ               Group the multidimensional indices by their value.
      €           For each list of indices:
   ạ                Take the absolute difference...
    þ`              ...between each pair.
       Ẏ          Concatenate the lists of differences.
        §         Sum the x & y differences. This computes the Manhattan distance.
                  At this point we have a list for each character in the text of 
                  Manhattan distances between it and it's identical characters. 
         1eⱮ      Is there a 1 in each of the lists? None for isolated characters.
            C     Complement: 0 <-> 1.
             S    Sum. Counts the isolated characters

3

MATL , 0 (54 बाइट्स)

TTTTf"Go@X!0JQJ&(d@_X!]***ggss
%%%%f"Go@X!0JQJ&(d@_X!]

इनपुट स्ट्रिंग्स का एक सेल एरे है, प्रत्येक लाइन के लिए एक {'line 1', 'line 2', 'and line 3'}:।

इसे ऑनलाइन आज़माएं! या परीक्षण मामलों और स्रोत कोड को सत्यापित करें



1

05AB1E , 0 (101 बाइट्स )

žGçU|€SXζζD"εγεDgDisëXи]"©.V˜sø®.V€Sø˜‚øʒË}ʒXå≠}gq
žGçU|€SXζζD"εγεDgDisëXи]"©.V˜sø®.V€Sø˜‚øʒË}ʒXå≠}gq

इसे ऑनलाइन आज़माएं।

यह मेरे द्वारा लिखे गए सबसे बदसूरत और सबसे लंबे 05AB1E कार्यक्रमों में से एक है।>> यह चुनौती 05AB1E में धोखा देने वाली कठिन है। मुझे कोई संदेह नहीं है कि बाइट-काउंट को अलग दृष्टिकोण (या समान दृष्टिकोण के साथ) का उपयोग करके कम से कम आधा या तीन से चार गुना छोटा किया जा सकता है, लेकिन मैं वर्तमान में नहीं देखता कि कैसे। मुझे खुशी है कि यह अभी काम कर रहा है .. अगर कोई और स्मार्ट पोस्ट के साथ बहुत कम 05AB1E उत्तर पोस्ट करता है तो मैं शायद इस जवाब को शर्म से हटा दूंगा ... xD

स्पष्टीकरण:

žGç                # Character with unicode 32768 ('耀')
   U               # Pop and store it in variable `X`
                   # (This character is not part of the printable ASCII, nor of my 05AB1E code)
|                  # Take the multi-line input as list
                   #  i.e. "Ybb\nYH%\n%%%%" → ["Ybb","YH%","%%%%"]
 S                # Convert each string to a list of characters
                   #  i.e. ["Ybb","YH%","%%%%"] → [["Y","b","b"],["Y","H","%"],["%","%","%","%"]]
   Xζζ             # Zip with character `X` as filler twice to make the lines of equal length
                   #  i.e. [["Y","b","b"],["Y","H","%"],["%","%","%","%"]]
                   #   → [["Y","b","b","耀"],["Y","H","%","耀"],["%","%","%","%"]]
      D            # Duplicate this list
"             "    # Create a string
               ©   # Which we store in the register (without popping)
                .V # And execute that string as 05AB1E code
 ε                 #  Map each inner list to:
  γ                #   Split in chunks of the same characters
                   #    i.e. [["Y","b","b"],["Y","H","%"],["%","%","%","%"]]
                   #     → [[["Y"],["b","b"]],[["Y"],["H"],["%"]],[["%","%","%","%"]]]
   ε               #   Map each of those to:
    D              #    Duplicate the current inner list
     gDi           #    If its length is exactly 1:
        s          #     Swap so the mapping keeps the duplicated single character (as list)
       ë           #    Else:
        Xи         #     Take character `X` repeated the length amount of times
                   #      i.e. ["%","%","%","%"] (length 4) → ["耀","耀","耀","耀"]
          ]        #  Close the if-else and both maps
           ˜       #  Flatten the list to a single list of characters
                   #   i.e. [[["Y"],["耀","耀"],["耀"]],[["Y"],["H"],["%"],["耀"]],[["耀","耀","耀","耀"]]]
                   #    → ["Y","耀","耀","耀","Y","H","%","耀","耀","耀","耀","耀"]
s                  # Swap so the duplicate list is at the top of the stack
 ø                 # Swap its rows and columns
                   #  i.e. [["Y","b","b","耀"],["Y","H","%","耀"],["%","%","%","%"]]
                   #   → [["Y","Y","%"],["b","H","%"],["b","%","%"],["耀","耀","%"]]
  ®.V              # Execute the same piece of code again that we've stored in the register
     S            # Convert each to a list of characters
                   #  i.e. [[["耀","耀"],["%"]],[["b"],["H"],["%"]],[["b"],["耀","耀"]],[["耀","耀"],["%"]]]
                   #   → [["耀","耀","%"],["b","H","%"],["b","耀","耀"],["耀","耀","%"]]
       ø           # Swap its rows and columns back again
                   #  i.e. [["耀","b","b","耀"],["耀","H","耀","耀"],["%","%","耀","%"]]
        ˜          # Flatten this list as well
                  # Pair both lists together
                   #  i.e. [["Y","耀","耀","耀","Y","H","%","耀","耀","耀","耀","耀"],
                   #        ["耀","b","b","耀","耀","H","耀","耀","%","%","耀","%"]]
 ø                 # Swap its rows and columns to create pairs
                   #  i.e. [["Y","耀"],["耀","b"],["耀","b"],["耀","耀"],["Y","耀"],["H","H"],["%","耀"],["耀","耀"],["耀","%"],["耀","%"],["耀","耀"],["耀","%"]]
  ʒË}              # Filter out any inner lists where both characters are not equal
                   #  i.e. [["耀","耀"],["H","H"],["耀","耀"],["耀","耀"]]
     ʒXå≠}         # Filter out any inner lists that contain the character `X`
                   #  i.e. [["H","H"]]
g                  # Take the length as result
                   #  i.e. [["H","H"]] → 1
 q                 # Stop the program, making all other characters no-ops
                   # (and output the length above implicitly)


0

जावास्क्रिप्ट (Node.js) , 0 (279 बाइट्स)

  s=>(b=s.map(Buffer)).map((x,i)=>x.filter((y,j)=>y-(g=(x,y)=>~~(b[x]&&b[x][y]))(i,j-1)&&y-g(i,j+1)&&y-g(i-1,j)&&y-g(i+1,j))).join``.length
//s=>(b=s.map(Buffer)).map((x,i)=>x.filter((y,j)=>y-(g=(x,y)=>~~(b[x]&&b[x][y]))(i,j-1)&&y-g(i,j+1)&&y-g(i-1,j)&&y-g(i+1,j))).join``.length

इसे ऑनलाइन आज़माएं!

लाइनों की सरणी के रूप में इनपुट प्राप्त करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.