बहुआयामी लेबल टाइपसेटिंग


12

स्टीम-पंक बहुआयामी दुनिया में, हमारे मालिक हमारे समूह के बहुआयामी फ़ाइल कैबिनेट में प्रत्येक दराज के लिए मुद्रित सूचकांक लेबल को चिपका देना चाहते हैं।

बॉस संपूर्ण लेबल शीट को एक ही रूप में टाइप करना चाहता है, केवल इस उद्देश्य के लिए खरीदे गए फ़ॉन्ट का उपयोग करके, इसलिए हमें सॉर्ट (धातु के प्रतीक टुकड़े) को ऑर्डर करना होगा । चूंकि सॉर्ट बहुत महंगे हैं, इसलिए हमारा क्रम प्रत्येक अंक-प्रतीक की सटीक गणना के लिए होना चाहिए।

आयामों की लंबाई के किसी दिए गए (किसी भी माध्यम से), 0, वापसी (किसी भी तरह से) हमारे आदेश, जो सभी कार्टेशियन निर्देशांक को टाइप करने के लिए आवश्यक अंकों की आवृत्ति तालिका है। इसे उपस्थिति के कीबोर्ड क्रम द्वारा व्यवस्थित किया जाना चाहिए (अर्थात 9 के बाद 0), और इसमें 0 प्रकार के आदेश शामिल नहीं हो सकते हैं, इसलिए यदि कोई प्रकार का आदेश नहीं दिया जाना है (क्योंकि एक आयाम की लंबाई 0 है); कुछ भी नहीं छापें।

  • -3 का बोनस अगर आपका कोड संभाल सकता है (यानी कुछ भी नहीं प्रिंट करें) 0 आयाम भी।
  • अंतिम न्यूलाइन चार्ट स्वीकार्य हैं।
  • मानक खामियों पर प्रतिबंध लागू होते हैं।
  • जैसा कि उल्लेख किया गया है, सॉर्ट महंगे हैं, इसलिए यह

स्वचालित स्कोरिंग को शामिल करने के लिए एक प्रकार की आत्मा इस चुनौती को संपादित कर सकती है, इसलिए जैसे शीर्षक शामिल करें:
# LanguageName, 123 sorts

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

दिए गए 11, प्रिंट करें:

1 4
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
0 1

क्योंकि आवश्यकतानुसार लेबल हैं 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, और 11


दिए गए 2 3, प्रिंट करें:

1 5
2 5
3 2

क्योंकि आवश्यकतानुसार लेबल हैं 1 1, 1 2, 1 3, 2 1, 2 2, और 2 3


दिया 2 0, एक खाली लाइन प्रिंट करें:

या कुछ नही।


दिए गए 1 2 3, प्रिंट करें:

1 11
2  5
3  2

क्योंकि आवश्यकतानुसार लेबल हैं 1 1 1, 1 1 2, 1 1 3, 1 2 1, 1 2 2, और1 2 3


दिए गए 5 5 5 5, प्रिंट करें:

1 500
2 500
3 500
4 500
5 500

और नहीं, मैं सभी 625 लेबल को सूचीबद्ध नहीं करने जा रहा हूं।


मैं आउटपुट आवश्यकताओं के बारे में थोड़ा अस्पष्ट हूं। पाठ में, यह कहता है "वापसी (किसी भी तरह से)", लेकिन बाकी का सुझाव है कि एक बहुत विशिष्ट आउटपुट प्रारूप की आवश्यकता है, और इसे मुद्रित करने की आवश्यकता है। इनमें से कौनसा? उदाहरण के लिए नई सुर्खियों के बारे में बात करना पूरी तरह से बेमानी लगता है अगर आउटपुट स्वरूप कुछ भी हो सकता है।
रेटो कोराडी

1
@RetoKoradi प्रारूप को कम या ज्यादा दिखाया गया है, लेकिन यह एक संवादात्मक सत्र में हो सकता है, एक फ़ाइल, एक पॉप-अप, STDOUT, आदि। क्या आपके पास एक सुझाव है कि मैं इसे स्पष्ट करने के लिए इसे कैसे वाक्यांश दे सकता हूं। ?
21

जवाबों:


6

द्यलोग एपीएल, 10 7

कोड 10 बाइट्स लंबा है और बोनस के लिए योग्य है।

3 बाइट्स के लिए user46915 का धन्यवाद!

,∘≢⌸∊⍕¨∊⍳⎕

ध्यान दें कि (इनपुट) TryAPL पर काम नहीं करता है; आप यहां फंक्शन फॉर्म को आजमा सकते हैं

            ⎕      Get input
           ⍳       Index vector
       ∊⍕¨∊        Flatten, stringify, flatten again
      ⌸            From the key, display the
{⍺,  }             elements concatenated with the
   ≢⍵              number of times they occur

मैं ऑपरेटर को पूरी तरह से नहीं समझता हूं , लेकिन {⍺}⌸उन अद्वितीय मूल्यों को {⍵}⌸सूचीबद्ध करता है , और तर्क में उनके स्थानों को सूचीबद्ध करता है।

इसका सही क्रम है क्योंकि यह वह क्रम है जिसमें अंकों को बहुआयामी सारणी में प्रदर्शित किया जाता है।


1
हाँ, मेरे मन में इसका समाधान है। यह कुंजी ऑपरेटर को समझने में मदद कर सकता है ।
एडम

1
क्या APL हमेशा कोडगोल्फ में नहीं जीतता है?
v3232 3

@ vy32 सं। एपीएल सबसे संक्षिप्त सामान्य प्रयोजन की भाषा हो सकती है, लेकिन हमेशा डोमेन-विशिष्ट भाषाएं होंगी जो किसी भी सामान्य उद्देश्य भाषा की तुलना में एक निश्चित सीमित डोमेन में बेहतर होती हैं। कोड-गोल्फिंग के विशिष्ट डोमेन के भीतर, पायथ और सीजैम जैसी गोल्फिंग भाषाएं आमतौर पर जीतती हैं। हालांकि, यह उल्लेखनीय है कि एपीएल, बहुत बड़ी कंपनियों द्वारा उत्पादन में उपयोग की जाने वाली एक वाणिज्यिक भाषा है, और भी करीब आती है। इसके अलावा, थोड़ा और अधिक क्रियाशील होने की कीमत के लिए, यह संभव है कि मनुष्य गोल्फिंग भाषाओं की तुलना में एपीएल पढ़ना सीखें।
सुबह

रुको, तो आपका मतलब है कि मैं पूरे हिस्टोग्राम को केवल ,∘≢⌸किसी भी बाहरी उत्पादों के बिना अद्वितीय और इस तरह से बना सकता हूं ?! Dyalog यकीन है कि कमाल है। से भी ,∘≢⌸छोटा है {⍺,≢⍵}⌸
user46915

3
@ एनबीजेड, मुझे एपीएल की याद आती है। 1982 में वापस मैंने एपीएल में एक ग्राफिक्स पैकेज लिखा, जिसमें डेज़ी व्हील प्रिंटर दिया गया। यह कला का एक काम था, हालांकि मुझे समझ नहीं आया कि मैंने एक महीने बाद क्या लिखा था।
vy32


2

गणितज्ञ, 111 85 बाइट्स

Grid[Thread@{Range@10~Mod~10,DigitCount@Tuples@Range@#~Total~2}~DeleteCases~{_,‌​0}]&

यहां ज्यादातर काम इनके द्वारा किया जाता है DigitCount


Grid[Thread@{Range@10~Mod~10,DigitCount@Tuples@Range@#~Total~2}~DeleteCases~{_,0}]&
एलेफाल्फा

2

आर, 110 बाइट्स

एलेक्स ए को धन्यवाद 4 धन्यवाद (धन्यवाद!)

U=unlist
X=table(U(strsplit(as.character(U(expand.grid(Map(seq_len,scan())))),"")))
z=Map(cat,names(X),X,"\n")

आप केवल का उपयोग xएक बार तो आप बस में से एक घटना को बदलने के लिए सक्षम होना चाहिए xके साथ scan()। इसके अलावा क्यों असाइन करें z?
एलेक्स ए।

धन्यवाद। उपयोग नहीं करने के बारे में सहमत हैं x। मैंने Mapएक zचर का आउटपुट दिया, अन्यथा Mapइसके आउटपुट को stdout में प्रिंट करूंगा। एक बेहतर अभ्यास Mapअंदर लपेटना होगा invisible()लेकिन यह बहुत सारे पात्र हैं ...
flodel

1

रूबी, 92 बाइट्स

f,*r=$*.map{|n|[*1..n.to_i]}
a=f.product(*r)*''
puts a.chars.uniq.map{|c|[c,a.count(c)]*" "}

कमांड लाइन तर्क के रूप में लंबाई लेता है:

$ ruby foo.rb 1 2 3
1 11
2 5
3 2

0

सीजेएम, 31 बाइट्स

Laq~{,m*}/e_:)s{_'0=A*+}$e`{(S\N}%

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

कोड 34 बाइट्स है, और खाली इनपुट सूची के साथ काम करने के लिए 3 बाइट बोनस लेता है। इनपुट CJam प्रारूप में एक सूची है, उदाहरण के लिए:

[1 2 3]

स्पष्टीकरण:

La    Push list containing empty list to seed Cartesian products.
q~    Get and interpret input.
{     Loop over values in input list.
  ,     Built range from 0 to value-1.
  m*    Form Cartesian product with the list we already have.
}/    End loop over values in input list.
e_    Resulting list has extra nesting. Flatten it.
:)    Increment all values in list, since it is 0-based, and we need 1-based.
s     Convert it to string, so we can operate on digits.
{     Block to calculate source key, needed to get 0 to the end.
  _     Copy the digit.
  '0=   Compare with '0.
  A*    Multiply comparison result by 10...
  +     ... and add it to digit.
}$    End of sort key block.
e`    RLE.
{     Start of loop over RLE entries, for generating output in specified format.
  (     Pop off the first value, which is the count.
  S     Push a space...
  \     ... and swap it with the count.
  N     Push a newline.
}%    End of loop over RLE entries.


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