3 ডি জাল অঙ্কন - আর্কিমেডিয়ান সলিডস


12

আমার কাছে 3 ডি নেটগুলির জন্য দুর্বলতা রয়েছে যা কাটা এবং ভাঁজ করার সময় আপনাকে কাগজ বা কার্ডের বাইরে 3 ডি আকার তৈরি করতে দেয়। টাস্কটি সহজ, আপনি তৈরি করতে পারেন সবচেয়ে সংক্ষিপ্ত প্রোগ্রাম যা 13 টি আর্কিমেডিয়ান সলিউডের জন্য জাল আঁকে। আউটপুটটি কোনও সংবেদনশীল বিন্যাসে (পিএনজি, জেপিজি) একটি চিত্র ফাইল হওয়া উচিত।

সমস্ত তেরটি আকার http://en.wikedia.org/wiki/Archimedean_solid এবং সেখান থেকে নেওয়া নিম্নলিখিত টেবিলটিতে বর্ণিত হয়েছে ।

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

ইনপুট: 1 থেকে 13 অবধি একটি পূর্ণসংখ্যা। ধরুন যে আকারগুলি উপরের টেবিলের মতো ঠিক গণনা করা হয়েছে যাতে "কাটা টেট্রহেড্রন" নম্বর 1 এবং "সানব ডডেকএহেড্রন" 13 নম্বর হয়।

আউটপুট: একটি আকৃতির ফাইল যা সেই আকৃতির নেট থাকে। অভ্যন্তরীণ লাইনগুলি সহ কেবল রূপরেখা ঠিক আছে। এটি রঙ দিয়ে পূরণ করার প্রয়োজন নেই

আপনি নিজের পছন্দমতো প্রোগ্রামিং ভাষার পাশাপাশি যে কোনও লাইব্রেরি বিশেষত এই প্রতিযোগিতার জন্য তৈরি করেননি। উভয়ই অনলাইনে (উভয় অর্থে) অবাধে উপলব্ধ হওয়া উচিত।

আমি ঠিক এক সপ্তাহের মধ্যে স্বল্পতম অক্ষরের সাথে উত্তরটি গ্রহণ করব accept উত্তরগুলি যখনই আসবে তারা গৃহীত হবে।

(না) এখনও বিজয়ী। দুঃখজনকভাবে কোনও বৈধ প্রবেশকারী নেই। এটা খুব কঠিন?


পুরোপুরি সময়সীমা অতিক্রম করতে পারেন? এখন থেকে কেউ যদি এক বছর এটি খুঁজে পায়। আপনি কি তাদের চেষ্টা না করার চান? ... প্লাটোনিক করার আগে আরও অপেক্ষা করা উচিত, অপেক্ষা করুন, তারপর শক্ত। আপনি আগ্রহ ভাগ করে নিতে পারেন। ব্যক্তিগতভাবে আমার জন্য (এগুলি সবই এক্সট্রাপোলেশন), যখন আমি দুটি অনুরূপ দেখতে পেয়েছিলাম তখন আমি একরকমভাবে তা থেকে সরে আসি, অনুভূতিতে আমার দু'জনের কাছে সত্যই দেখার সুযোগ নেই এবং কীভাবে উভয়কে সমাধান করা যায় তা পরিকল্পনা করার চেষ্টা করি। এবং আমি এটি অন্য কোনও উপায়ে করতে চাই না .... অন্যদিকে, অন্যদের এখানে পার্ট -২ চ্যালেঞ্জগুলির মধ্যে সমস্যা হয়েছে। মিনস্কি রেজিস্টার মেশিনগুলি দেখুন। সম্ভবত এটি আপনি না।
luser droog

@ লেজারড্রোগ ধন্যবাদ প্রশ্ন সম্পাদিত। আমার সম্ভবত এটি যুক্ত করা উচিত যে আমি এটি পছন্দ করি এমন অনেক লোকের আশপাশে সম্পর্কিত প্রশ্নের উত্তর ইমেল করেছি! FWIW।
felipa

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

উত্তর:


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 যদি এটি এখনও একটি স্ব-ছেদটি আউটপুট করে, তবে এটি কোনও সমাধান হবে না। এটি একটি বৈধ উত্তর।
অ্যাডিটসু ছেড়ে গেছে কারণ এসই

এটি ফ্ল্যাগ করা হয়েছে কারণ এটি আমাদের সহায়তা কেন্দ্রের একটি বিধি লঙ্ঘন করেছে : চ্যালেঞ্জগুলির সমস্ত সমাধান ব্যবহারে বিজয়ী মানদণ্ডের জন্য গুরুতর প্রতিযোগী হওয়া উচিত [...]। উদাহরণস্বরূপ, একটি কোড গল্ফ প্রতিযোগিতায় একটি এন্ট্রি গল্ফ করা প্রয়োজন।
ডেনিস

@ ডেনিস এখন আরও ভাল, মি। পুলিশ? : পি
অ্যাডিটসু প্রস্থান করুন কারণ এসই ইভিএল


6

ম্যাথামেটিকাল

প্রতিযোগিতার বাইরে, একটি মুক্ত ভাষা নয়

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

ব্যবহার:

f /@ Range@13

গণিত গ্রাফিক্স

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.