एक नंबर सूचीबद्ध करें


19

एक वास्तविक संख्या को देखते हुए, इसे नकारात्मक सूची (यदि कोई हो) की सूची के साथ एक खाली सूची में बदल दें, पूर्णांक भाग अंकों की एक सूची बन जाता है, और अंश वाला भाग (यदि हो तो) अंकों की सूची बन जाता है। अंकों को वास्तविक संख्या होना चाहिए, न कि तार।

उदाहरण

0[[0]]

123[[1,2,3]]

-123[[],[1,2,3]]

123.45[[1,2,3],[4,5]]

0.45[[0],[4,5]]

-0.45[[],[0],[4,5]]

-123.45[[],[1,2,3],[4,5]]


क्या सरणी में अंक एकल-चार तार होने की अनुमति है?
दिज़िमा

@dzaima नहीं, मैं इसे जोड़ूंगा।
एडम जूल

क्या संख्या को एक स्ट्रिंग के रूप में लिया जा सकता है?
ऊरीएल

@ यूरेल यदि आपको एसटीडीआईएन से इनपुट मिलता है तो हां (कोई अंतर नहीं है)। अगर तर्क के रूप में, नहीं, मुझे लगता है। जो भी मेटा सर्वसम्मति है।
14

2
@Quelklef हां, वास्तव में। यह एक लंबे डिजाइन चर्चा का परिणाम था आप यहाँ देख सकते हैं के बारे में l(listify) की कमान totallyhuman के WIP भाषा, Intrnt
एडम जूल

जवाबों:


7

सी #, 60 66 बाइट्स

using System.Linq;s=>s.Split('-','.').Select(p=>p.Select(c=>c-48))

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


कोई दृश्यमान बाहरी कोष्ठक नहीं हैं। क्या आपके परिणाम वास्तव में सूचीबद्ध हैं?
एडम जूल

@ Adám Yes ( IEnumerable<char[]>) यह सिर्फ प्रिंटिंग कोड उन्हें नहीं जोड़ता है।
TheLethalCoder

@TheLethalCoder आवश्यकताओं को बताता है कि आवश्यक रिटर्न प्रकार अंकों की एक सूची है जो संख्या के रूप में है, न कि तार या चार्ट जो उन संख्याओं को प्रदर्शित करते हैं।
कामिल दकरी

@KamilDrakari ओह नहीं देखा था कि कल्पना को अपडेट किया गया था ...
TheLethalCoder

@KamilDrakari फिक्स्ड, मुझे अपडेट के बारे में बताने के लिए धन्यवाद।
द लीथाल्कोडर

7

जावास्क्रिप्ट (ईएस 6), 33 44 43 41 बाइट्स

एक स्ट्रिंग के रूप में इनपुट लेता है। चुनौती के अनुमान के अद्यतन होने के बाद आउटपुट में तत्वों को परिवर्तित करने के लिए 11 10 बाइट्स का बलिदान किया गया।

s=>s.split(/\D/).map(a=>[...a].map(eval))
  • का उपयोग करने के सुझाव के Arnauld के लिए एक बाइट धन्यवाद सहेजा eval

झसे आज़माओ

console.log((
s=>s.split(/\D/).map(a=>[...a].map(eval))
)("-123.45"))


व्याख्या

s=>

अनाम फ़ंक्शन स्ट्रिंग को पैरामीटर के माध्यम से एक तर्क के रूप में ले रहा है s
"-123.45"

s.split(/\D/)

सभी गैर-अंकीय वर्णों पर सरणी को विभाजित करने के लिए RegEx का उपयोग करें - यानी, -और.
["","123","45"]

.map(a=>)

पैरामीटर के माध्यम से फ़ंक्शन के प्रत्येक स्ट्रिंग को पास करते हुए, सरणी पर मैप करें a

[...a]

व्यक्तिगत चरित्र तार की एक सरणी में विभाजित करें।
[[],["1","2","3"],["4","5"]]

.map(eval)

सबर्रे और evalप्रत्येक स्ट्रिंग पर नक्शा , जो इसे पूर्णांक में परिवर्तित करता है।
[[],[1,2,3],[4,5]]


तार की 2 डी सरणी? JSON कैसे दिखता है?
14

अंक संख्या होना चाहिए।
14

@ Adám: अपडेट, 11 बाइट्स की लागत पर।
शैगी


5

जेली ,  13  10 बाइट्स

ŒṘµ<”/œpV€

एक मोनडिक लिंक एक संख्या ले रहा है और संख्याओं की सूचियों की परिणामी सूची लौटा रहा है।

इसे ऑनलाइन आज़माएं! (पाद लेख सभी वास्तविक सूचियों को दिखाने के लिए सिर्फ अजगर प्रतिनिधित्व को प्रिंट करता है)
... या परीक्षण सूट देखें

कैसे?

ŒṘµ<”/œpV€ - Link: number
ŒṘ         - Python representation (yields a string representation of the number)
  µ        - monadic chain separation (call that s)
    ”/     - literal '/' character
   <       - less than? (vectorises) ('.' and '-' are, digit characters are not)
      œp   - partition s at truthy indexes of the resulting list discarding the borders
        V€ - evaluate €ach (list of characters) as Jelly code (vectorises)

और फिर से जेली 05AB1E से बेहतर है!
14

4

05AB1E , 12 11 बाइट्स

एक बाइट बचाने के लिए रिले के लिए धन्यवाद । कोड:

'-'.:'.¡εSï

05AB1E एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

'-'.:            # Replace "-" by "."
     '.¡         # Split on "."
        ε        # Apply to each element..
         S       #   Split into a list of characters
          ï      #   Convert back to int

क्या आपको तकनीकी रूप से इसकी आवश्यकता है ï?
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn ओपी ने कहाThe digits must be actual numbers, not strings.
डेजिमा

1
यह शर्म की बात है, मैं सोच रहा था: „-.S€¡6 के लिए, लेकिन अगर उन्हें चींटियों ... अनिश्चित हो।
मैजिक ऑक्टोपस Urn

3

पायथन 2 , 59 बाइट्स

lambda a:[[]]*(a<0)+[map(int,n)for n in`abs(a)`.split('.')]

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

फेलिप नारदी बतिस्ता से -5 बाइट्स


आपके तीसरे आउटपुट [[[1, 2, 3], [4, 5]]]में एक अतिरिक्त बाहरी सूची है
फेलिप नारदी बतिस्ता

फिक्स्ड और अभी भी 64 बाइट्स लिंक
फेलिप नारदी बतिस्ता

1
आप 59 बाइट्स प्राप्त कर सकते हैं यदि आप अपने बाहरी mapको सूची समझ के साथ बदलते हैं : लिंक
फेलिप नारदी बतिस्ता

2

दरअसल , 23 बाइट्स

'.@;)A$s⌠♂≈⌡M[[]]+@s~@t

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

स्पष्टीकरण:

'.@;)A$s⌠♂≈⌡M[[]]+@s~@t
'.                       push "."
  @;)                    make a copy of the input and move it to the bottom of the stack
     A$s                 absolute value of input, stringify, split on periods
        ⌠♂≈⌡M            convert integer and fractional parts to lists of digits
             [[]]+       prepend an empty list
                  @s~    bitwise negation of sign of input (1 -> -2, 0 -> -1, -1 -> 0)
                     @t  elements in the list starting at that 0-based index (drops the leading empty list if the input was positive)

2

SOGL V0.12 , 11 बाइट्स

Ζ-.ŗ .Θ⌡č¹r

यह कोशिश करो!

स्टैक के शीर्ष पर आउटपुट (क्योंकि एसओजीएल इसे मल्टीलाइन स्ट्रिंग में परिवर्तित करता है क्योंकि यह एससीआई-कला के लिए बनाया गया है)। परिणाम देखने के लिए, कंसोल में देखें `r`@10:(बाहरी कोष्ठक स्टैक सरणियाँ हैं) या οø∑कोड के बाद बस संलग्न करें

Ζ-.ŗ         replace "-" with "."
     .Θ      split on "."s
       ⌡     for each
        č      chop into characters (casts to strings :/)
         ¹   wrap in array (this + for each is like map())
          r  reverse types, vectorizing

2

जाप (v2.0a0), 12 10 8 बाइट्स

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

q\D ®¬®n

इसका परीक्षण करें ( -Qकेवल विज़ुअलाइज़ेशन उद्देश्यों के लिए ध्वज)

  • 2 बाइट्स ने जस्टिन को धन्यवाद दिया ।
  • 2 बाइट्स ETH की बदौलत बच गए।

व्याख्या

स्ट्रिंग का निहित इनपुट U

q\D

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

®

सरणी पर नक्शा।

¬

प्रत्येक स्ट्रिंग को अलग-अलग वर्णों की एक सरणी में विभाजित करें।

®

सरणी पर नक्शा।

n

पूर्णांक में परिवर्तित करें।


2
क्या आप विभाजित नहीं कर सकते \D, क्योंकि केवल गैर-अंक होंगे .और -?
जस्टिन मेरिनर

सबसे अच्छी बात यह है कि, आपको /
ETHproductions

@ETHproductions: अब, यह बहुत प्यारा है। मुझे लगा कि शायद मैं मल्टीलाइन पर जाकर क्लोज़िंग छोड़ सकता हूं /। मैंने कभी उन दोनों को छोड़ने की कोशिश नहीं की।
शैगी

1

ऑक्टेव , 54 बाइट्स

@(x)cellfun(@(c){c-48},strsplit(num2str(x),{'-' '.'}))

अनाम फ़ंक्शन जो इनपुट के रूप में एक संख्या लेता है और संख्यात्मक वैक्टर के सेल सरणी का उत्पादन करता है।

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

व्याख्या

@(x)cellfun(@(c){c-48},strsplit(num2str(x),{'-' '.'}))

@(x)                                                    % Function with input x
                                num2str(x)              % Convert x to string
                       strsplit(          ,{'-' '.'})   % Split at '-' or '.'. Gives a
                                                        % cell array of substrings
    cellfun(          ,                               ) % To each substring apply
                                                        % the following function
            @(c){c-48}                                  % Subtract 48 from each char
                                                        % and pack into a cell

1

C (gcc) , 170 164 152 146 144 बाइट्स

यह थोड़ा नीचे गोल्फ में सक्षम होना चाहिए ...

#define P printf
#define V *v[1]
main(c,v)char**v;{for(V^45?P("[[%c",V++):P("[[],[%c",V++,V++);V;V^46?P(",%c",V++):P("],[%c",V++,V++));P("]]");}

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


मुझे लगता है कि आप कुछ बाइट्स कर सकते हैं #define P printf(और फिर Pकॉल में कोष्ठक को छोड़ सकते हैं
Cyoce

1

जेली , 12 बाइट्स

ŒṘ⁾-.yṣ”.V€€

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


हाँ, मैंने भी कोशिश की है, वर्तमान में मुझे केवल 13 मिले हैं (मैं पोस्ट करूँगा किंतु यह सोचें कि यह छोटा होना चाहिए) इसके बजाय 0.45रिटर्न (यह साथ टकराता है )[[],[4,5][[0],[4,5]]-45
जोनाथन एलन

@JonathanAllan ओह, हाँ, वास्तव में ... मुझे यकीन नहीं है कि मुझे कहाँ मिला? ओह रुको, यह है ! ठीक कर रहा है ... ठीक है। कौन उम्मीद करेंगे कि जेली पार्स करता है 0और .45के 0.45लिए अलग से ... और यह के रूप में है उत्पादन भी।
आउटगॉल्फ जूल

1

दरअसल , 16 बाइट्स

$'.'-(Æ'.@s⌠♂≈⌡M

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

स्पष्टीकरण:

$'.'-(Æ'.@s⌠♂≈⌡M Implicit eval'd input
$                Convert to str
 '.              Push '.'
   '-            Push '-'
     (           Rotate stack left
      Æ          Pop a, b, c; push c.replace(b, a)
       '.        Push '.'
         @       Pop a, b; push b, a (swap)
          ⌠♂≈⌡   Push function ♂≈
           ♂       Map
            ≈        Convert to int
              M  Map

1
निर्माता को अच्छा लगा।
ज़ाचरी जूल

@ Zacharý यह एल्गोरिथम पसंद की बात है।
निकोलग्राफ जूल


@ Zacharý खैर, इस चुनौती के लिए दो बार उचित ...
एरिक द आउटग्राफर

1

आर, 51 47 72 बाइट्स

x=RG::s(strtoi(s(gsub('-','.',scan()),on='\\.')))
x[is.na(x)]=list(NULL)

मुझे RGलाइब्रेरी से प्यार है ।

खाली सूची वास्तव में खाली थी यह सुनिश्चित करने के लिए 26 बाइट्स जोड़ना था।

               gsub('-','.',scan())             # replace - with . in input; also converts to string
             s(                    ,on='\\.')   # split string on '.'
      strtoi(                                )  # convert to numeric
RG::s(                                        ) # convert to lists of digits

    x[is.na(x)]=list(NULL)                      # converts list of `NA` to empty list

उदाहरण आउटपुट:

> x=RG::s(strtoi(s(gsub('-','.',-123.45),on='\\.')))
> x[is.na(x)]=list(NULL)
> x
[[1]]
NULL

[[2]]
[1] 1 2 3

[[3]]
[1] 4 5

ठीक है, numeric(0)एक खाली संख्यात्मक सूची के लिए है या list()या NULL?
Giuseppe

मैंने इसे बनाने के लिए एक फिक्स पर NULLटैकल किया, लेकिन अब मुझे यकीन है कि इसे करने के लिए एक गोल्फ खिलाड़ी है। शायद मैं इसमें वापस आ जाऊं।
BLT

1

पर्ल 5 , 56 54 + 1 (-पी) = 55 बाइट्स

$_="[[$_]]";s/\D\K\./0./;s/\d(?=\d)/$&,/g;s/-|\./],[/g

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

डोम के कारण दो बाइट्स बचाए जो मुझे $ और याद दिलाते हैं

स्पष्टीकरण:

$_="[[$_]]";        # Add opening and closing to ends of strings
s/\D\K\./0./;       # handle the case of .45 or -.45 by inserting 0 before
                    # the decimal.  Otherwise, .45 & 45 would be ambiguous.
s/\d(?=\d)/$&,/g;   # Put a comma between numbers.
s/-|\./],[/g        # Turn - and . into separators between lists

इसके साथ थोड़ा खेल था और इसे थोड़ा छोटा होने के लिए तोड़ दिया। यकीन नहीं होता कि क्या आप इसे अपने नीचे सिकोड़ने के लिए खदान के आधार पर जोड़ सकते हैं? Online इसे ऑनलाइन आज़माएं!
डोम हेस्टिंग्स

1
$ से और तुम्हारा इस्तेमाल किया। मुझे लगता है कि दोनों मूल रूप से अब समान हैं, सिवाय इसके कि मेरा ".45" बनाम "45" मामला संभालता है।
Xcali

आह, हाँ, याद किया!
डोम हेस्टिंग्स

1

पर्ल 6 , 23 बाइट्स

+«*.split(/\D/)».comb

झसे आज़माओ

विस्तारित

\            # numify each of the following (possibly in parallel)
*\             # WhateverCode lambda (this is the input)
.split(/\D/)\  # split on non-digits ( . and - )
».comb         # split each of those into individual characters

ध्यान दें कि …».combकी तुलना में एक उच्च मिसाल है+«…





0

पर्ल 6 , 22 बाइट्स

{m:g/^\d*|\d+/».comb}

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

लौटी सूची में तत्व तार हैं, लेकिन जैसा कि पर्ल के लिए सामान्य है, उन्हें संख्याओं के रूप में इस्तेमाल किया जा सकता है और अंतर्निहित रूप से परिवर्तित किया जाएगा; वे सभी व्यावहारिक उद्देश्यों के लिए "वास्तविक संख्या" हैं। उन्हें अपने सबसे तात्कालिक प्रतिनिधित्व में संख्या के लिए मजबूर करने के लिए, एक को तीन और बाइट्स के लिए "+« "के साथ कोड ब्लॉक की सामग्री को केवल उपसर्ग की आवश्यकता होती है।


चुनौती विशेष रूप से कहती है “ अंक वास्तविक संख्या होने चाहिए, तार नहीं। ”, तो शायद शामिल किया जाना चाहिए।
ब्रैड गिल्बर्ट ने २२

0

आरयूबी, 75 बाइट्स

->(x){(x<0?[[]]:[])+x.abs.to_s.split('.').map{|y|y.chars.map{|z|z.to_i}}}

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


1
क्या आप उस सभी व्हाट्सएप को हटा सकते हैं?
ललथकोदर

हाँ, तुम सही हो, हो गया!
ग्रेगरी

कुछ सिंटैक्स ट्विक्स के साथ भी ऐसा ही है: इसे ऑनलाइन आज़माएं! (BTW, यदि आप TIO पर हैडर और
फुटर

फिक्स्ड, सभी infos के लिए धन्यवाद।
ग्रेगरी

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