Advertisement
czaffik

Spirala Ulama

Jan 14th, 2023
1,908
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QML 2.81 KB | Science | 0 0
  1. // main.cpp
  2. #include <QGuiApplication>
  3. #include <QQmlApplicationEngine>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  8.  
  9.     QGuiApplication app(argc, argv);
  10.  
  11.     QQmlApplicationEngine engine;
  12.     engine.load(QUrl(QStringLiteral("main.qml")));
  13.     if (engine.rootObjects().isEmpty())
  14.         return -1;
  15.  
  16.     return app.exec();
  17. }
  18.  
  19. // main.qml
  20. import QtQuick 2.9
  21. import QtQuick.Window 2.2
  22.  
  23. Window {
  24.     id: mainwindow
  25.     visible: true
  26.     width: 1200
  27.     height: 1000
  28.     title: qsTr("Hello World")
  29.     property variant punkty: [];
  30.  
  31.     Component.onCompleted: {
  32.         spirala()
  33.     }
  34.  
  35.     function isPrime(n) {
  36.         var sn = Math.sqrt(n);
  37.         for (var i = 2; i <= sn; i++) {
  38.             if (!(n%i)) return false;
  39.         }
  40.         return true;
  41.     }
  42.  
  43.     function liczbaPol(n) {
  44.         var res = 9;
  45.         var tmp = 16;
  46.         for (var i = 2; i <= n; i++) {
  47.             res += tmp;
  48.             tmp += 8;
  49.         }
  50.  
  51.         return res;
  52.     }
  53.  
  54.     function spirala() {
  55.         var x = 590;
  56.         var y = 490;
  57.  
  58.         var ds = 20;
  59.         var dx = 1;
  60.         var dy = -1;
  61.  
  62.         var mx = true;
  63.         var su = 0;
  64.         var m = 1;
  65.         var kl = 2, ki = 0, km = 0;
  66.         var suma = 1;
  67.         var lp = liczbaPol(20);
  68.         var cp = 1, clp = 0;
  69.  
  70.         for (var j = 1, k = 0; j <= lp; j++) {
  71.             punkty.push(Qt.createQmlObject('Rect { x: ' + x + '; y: ' + y + '; number: ' + j + ' }', mainwindow));
  72.  
  73.             if (ki >= kl) {
  74.                 cp++;
  75.                 if (isPrime(j)) {
  76.                     punkty[j-1].textColor = "red";
  77.                     clp++;
  78.                 }
  79.  
  80.                 suma += j;
  81.                 ki = 0;
  82.                 km++;
  83.             }
  84.             ki++;
  85.  
  86.             if (km >= 4) {
  87.                 kl += 2;
  88.                 km = 0;
  89.             }
  90.  
  91.             if (mx) x += dx*ds;
  92.             else y += dy*ds;
  93.             k++;
  94.             if (k == m) {
  95.                 mx = !mx;
  96.                 su++;
  97.                 k = 0;
  98.             }
  99.             if (su == 2) {
  100.                 m++;
  101.                 dx *= -1;
  102.                 dy *= -1;
  103.                 su = 0;
  104.             }
  105.         }
  106.  
  107.         console.log(clp, '/', cp, ' ', Math.round((clp/cp)*100), '%');
  108.     }
  109. }
  110.  
  111. // Rect.qml
  112. import QtQuick 2.0
  113.  
  114. Rectangle {
  115.     id: root
  116.  
  117.     property int number
  118.     property color borderColor: "transparent"
  119.     property color textColor: "black"
  120.     property int size: 20
  121.  
  122.     width: size;
  123.     height: size;
  124.     border.width: 1;
  125.     border.color: borderColor;
  126.     color: "transparent";
  127.  
  128.     Text {
  129.         font.pointSize: 5
  130.         color: textColor
  131.         x: root.width/2 - width/2
  132.         y: root.height/2 - height/2
  133.         text: number
  134.     }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement