3 डी नेट ड्राइंग - आर्किमिडीज़ ठोस


12

मेरे पास 3 डी नेट के लिए एक कमजोरी है जो कट आउट और मुड़ा हुआ है, जिससे आप कागज या कार्ड से 3 डी आकार बना सकते हैं। यह कार्य सरल है, सबसे छोटा प्रोग्राम जो आप लिख सकते हैं, 13 आर्कमेडियन ठोस के लिए जाल बनाता है। आउटपुट किसी भी समझदार प्रारूप (png, jpg) में एक छवि फ़ाइल होनी चाहिए।

सभी तेरह आकृतियों का वर्णन http://en.wikipedia.org/wiki/Archimedean_solid और वहां से ली गई निम्न तालिका में किया गया है।

यहाँ छवि विवरण दर्ज करें

इनपुट: 1 से 13. तक एक पूर्णांक। मान लें कि आकृतियों को ऊपर की तालिका में ठीक उसी प्रकार गिना गया है ताकि "ट्रंककेटेड टेट्राहेड्रॉन" संख्या 1 है और "स्नब डोडेकाहेड्रॉन" संख्या 13 है।

आउटपुट: उस आकृति के लिए नेट वाली एक छवि फ़ाइल। बस आंतरिक रेखाओं सहित रूपरेखा ठीक है। इसे रंगों से भरने की कोई आवश्यकता नहीं है

आप किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं जिसे आप पसंद करते हैं और साथ ही किसी भी पुस्तकालय को जो इस प्रतियोगिता के लिए विशेष रूप से नहीं बनाया गया था। दोनों को स्वतंत्र रूप से उपलब्ध होना चाहिए (दोनों इंद्रियों में) ऑनलाइन।

मैं ठीक एक सप्ताह के समय में पात्रों की सबसे छोटी संख्या के साथ उत्तर स्वीकार करूंगा। जब भी आएंगे उत्तर स्वीकार किए जाएंगे।

(नहीं) विजेता अभी तक। दुख की बात है कि कोई वैध प्रवेशार्थी नहीं है। शायद यह बहुत कठिन है?


शायद समय-सीमा के साथ पूरी तरह से दूर हो? क्या होगा अगर किसी को यह अब से एक वर्ष मिल जाए। क्या आप चाहते हैं कि वे कोशिश न करें? ... शायद पहले प्लॉटोनिक करना बेहतर था, प्रतीक्षा करें, फिर कठिन। आपने ब्याज को विभाजित किया हो सकता है। मेरे लिए व्यक्तिगत रूप से (यह सब एक्सट्रपलेशन है), जब मैंने दो समान देखे, तो मैं इससे पीछे हट गया, यह महसूस करते हुए कि मेरे पास वास्तव में दोनों को देखने और दोनों को हल करने की योजना बनाने का समय नहीं था। और मैं इसे किसी अन्य तरीके से नहीं करना चाहूंगा .... दूसरी ओर, यहां अन्य लोगों को भाग -2 चुनौतियों के साथ कठिनाई हुई है। Minsky रजिस्टर मशीन वाले देखें। शायद यह आप नहीं हैं।
लूजर ने

@luserdroog धन्यवाद। प्रश्न संपादित किया गया। मुझे शायद यह जोड़ना चाहिए कि मैंने बहुत से लोगों के आसपास संबंधित प्रश्न का उत्तर ईमेल किया है जो इसे प्यार करते हैं! FWIW।
फेलिपा

मुझे नहीं लगता कि ऐसा करना कठिन है , लेकिन गोल्फ के लिए कई घंटे सोचने और प्रयोग करने की आवश्यकता होती है क्योंकि प्रत्येक पॉलीहेड्रॉन के लिए कई संभव जाल हैं और वे समान रूप से अच्छी तरह से संपीड़ित नहीं करेंगे।
पीटर टेलर

जवाबों:


9

जावा, 1552

import java.awt.*;import java.awt.image.*;import java.io.*;import javax.imageio.*;class
A{public static void main(String[]x)throws
Exception{String[]a={"33623368356:356;66","33413341334535463547354735473444","33823382338:3586338>358>358>358?88","66456:466:466845684668466766","334144453546354635474746464646464647354634463446344744","88456:466:466:4668458<468<468<468:456846684668466788","33343535353231333535313133353447353434353534313133353447353545343535313133353447353545343444","33513351335233593554335433593554335935543359355433593559355835593559355935593455","33:233:233:433:B35:833:833:B35:833:B35:833:B35:833:B35:B35:833:B35:B35:B35:B35:C::","66566:576:57696869576969586969586:586969576969586857685868586766","334155453546354635463547594658465846584658473546354634463546344635463446354634463547584657465746574657473546344634463446344755","::456:466:466:466:466845:@46:@46:@46:@46:>4568466:4668466:4668466:4668466:4668466845:>46:>46:>46:>46:<45684668466846684667::","333531333434343132333434353531313335343434323232323334343435353231333133343556343434313233323335345935353532313331313132333233353535343557343133343556343434355934353535593432333234355935323335345935323335345935323335345935343459313334353455"};BufferedImage
m=new BufferedImage(1300,1300,1);Graphics2D g=m.createGraphics();g.translate(500,500);String
s=a[Integer.valueOf(x[0])-1];int f=1,i=0,n,t;while(i<s.length()){n=s.charAt(i++)-48;t=s.charAt(i++);while(t-->48){g.drawLine(0,0,20,0);g.translate(20,0);g.rotate(f*Math.PI*2/n);}f=-f;}ImageIO.write(m,"png",new File("o.png"));}}

Ungolfed:

import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class A {
    static int f = 1;
    static Graphics2D g;

    static void fixtrans() {
        double[] m = new double[6];
        g.getTransform().getMatrix(m);
        for (int i = 0; i < 6; ++i) {
            if (Math.abs(m[i] - Math.round(m[i])) < 1e-5) {
                m[i] = Math.round(m[i]);
            }
        }
        g.setTransform(new AffineTransform(m));
    }

    static void d(String s) {
        for (int i = 0; i < s.length();) {
            int n = s.charAt(i++) - '0';
            int t = s.charAt(i++) - '0';
            for (int j = 0; j < t; ++j) {
                g.drawLine(0, 0, 20, 0);
                g.translate(20, 0);
                g.rotate(f * Math.PI * 2 / n);
                fixtrans(); // optional, straightens some lines
            }
            f = -f;
        }
    }

    public static void main(String[] args) throws Exception {
        String[] a = {
                "33623368356:356;66",
                "33413341334535463547354735473444",
                "33823382338:3586338>358>358>358?88",
                "66456:466:466845684668466766",
                "334144453546354635474746464646464647354634463446344744",
                "88456:466:466:4668458<468<468<468:456846684668466788",
                "33343535353231333535313133353447353434353534313133353447353545343535313133353447353545343444",
                "33513351335233593554335433593554335935543359355433593559355835593559355935593455",
                "33:233:233:433:B35:833:833:B35:833:B35:833:B35:833:B35:B35:833:B35:B35:B35:B35:C::",
                "66566:576:57696869576969586969586:586969576969586857685868586766",
                "334155453546354635463547594658465846584658473546354634463546344635463446354634463547584657465746574657473546344634463446344755",
                "::456:466:466:466:466845:@46:@46:@46:@46:>4568466:4668466:4668466:4668466:4668466845:>46:>46:>46:>46:<45684668466846684667::",
// bad          "333531333434343132333434353531313335343434323232323334343435353231333133343556343434313233323335345935353532313331313132333233353535343557343133343556343434355934353531333459343434355935323335345935323335345935323335345935323335345935353455"
                "333531333434343132333434353531313335343434323232323334343435353231333133343556343434313233323335345935353532313331313132333233353535343557343133343556343434355934353535593432333234355935323335345935323335345935323335345935343459313334353455"};

        BufferedImage img = new BufferedImage(1300, 1300, BufferedImage.TYPE_INT_RGB);
        g = img.createGraphics();
        g.translate(500, 500);
        d(a[Integer.parseInt(args[0]) - 1]);
        String f = args[0] + ".png";
        ImageIO.write(img, "png", new File(f));
    }
}

परिणाम (छंटनी की गई, उपेक्षित, सम्मिलित और मापी गई):

परिणाम

आकार काफी असामान्य हैं :) लेकिन जहाँ तक मैं बता सकता हूँ सही है (मुझे पता है कि आप किसी भी त्रुटि मिल जाए)। वे एक अलग कार्यक्रम में (एक अलग कार्यक्रम में) डीएफएस में फेस ग्राफ के निर्माण और चक्रों को काटकर बनाए गए थे।

मुझे यकीन है कि यह अजगर और कछुए का उपयोग करके काफी अधिक गोल्फ हो सकता है।

संपादित करें: उफ़, आखिरी मामला थोड़ा आत्म-प्रतिच्छेद था। मैंने कोड (हाथ से) तय किया, यहां अपडेट की गई छवि है:

13 को सही किया गया


क्या हाथ से तय होने का मतलब है कि कोड अभी भी एक स्व-प्रतिच्छेदन का आउटपुट देता है? क्या केवल यही एक वैध जवाब होने से अलग है?
ट्राइकोप्लाक्स

@githubphagocyte यदि यह अभी भी एक स्व-प्रतिच्छेदन का उत्पादन करता है, तो यह ठीक नहीं होगा। यह एक मान्य उत्तर है।
एडित्सू ने छोड़ दिया क्योंकि एसई ईवीआईएल

इसे ध्वजांकित किया गया है क्योंकि यह हमारे सहायता केंद्र में नियमों में से एक का उल्लंघन करता है : चुनौतियों के सभी समाधान [...] उपयोग में जीतने के मानदंडों के लिए एक गंभीर दावेदार होना चाहिए। उदाहरण के लिए, एक कोड गोल्फ प्रतियोगिता में प्रवेश के लिए गोल्फ होना आवश्यक है।
डेनिस

@ डेनिस अब बेहतर, श्री। पोलिस वाला? : p
aditsu छोड़ दिया है क्योंकि SE EVIL


6

मेथेमेटिका

प्रतियोगिता से बाहर, एक स्वतंत्र भाषा नहीं

f[n_] := PolyhedronData[Sort[PolyhedronData["Archimedean", 
                                             {"FaceCount", "StandardName"}]][[n, 2]],  "NetImage"]

उपयोग:

f /@ Range@13

गणितज्ञ ग्राफिक्स

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