Программирование на Groovy
| |
colencor | Дата: Вторник, 30 Мая 2017, 13:56 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Код import groovy.swing.SwingBuilder import javax.swing.* import java.awt.FlowLayout /*def download(address) { def file = new FileOutputStream(address) def out = new BufferedOutputStream(file) out << file (address).openStream() out.close() } download(chisla)*/ swinger = new SwingBuilder() gui = swinger.frame(title:'Арабские << >> Римские', size: [448, 160]) { panel(layout: new FlowLayout()) { arabrim = new JLabel('Это приложение переводит из арабской cистемы счисления в римскую и обратно!') arabrim.setBorder(BorderFactory.createEtchedBorder()) panel().add(arabrim) panel(layout: new FlowLayout()) { arab = new JLabel('Арабское число:'); panel().add(arab) message1 = textField(columns: 12) button = swinger.button(text: 'Вычислить', actionPerformed: { JOptionPane.showMessageDialog(gui, ArabRim(message1.text))}) button = swinger.button(text: 'Очистить', actionPerformed: { message1.selectAll(); message1.cut()}) } rim = new JLabel('Римское__число:'); panel().add(rim) message2 = textField(columns: 12) button = swinger.button(text: 'Вычислить', actionPerformed: { JOptionPane.showMessageDialog(gui, RimArab(message2.text))}) button = swinger.button(text: 'Очистить', actionPerformed: { message2.selectAll(); message2.cut()}) }} gui.show()
def ArabRim (Arab) { List Rim = [ "I", "V", "X", "L", "C", "D", "M"] A = Arab.reverse(); i = 0; L = [] for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2 switch (x){ case 4: r = Rim[iI] + Rim[iV]; break case 9: r = Rim[iI] + Rim[iX]; break case 1..3: r = ""; for( int j = 0; j < x; j++){ r = r + Rim[iI]}; break case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + Rim[iI]}; r1 = Rim[iV]; r = r1 + r2; break case 0: r = ""; break }; ++i; L = L + r} Rim = L.reverse(); return Rim.join() } def RimArab (Rim) { Map rimArab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000] f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC") Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}; return Arab } В комментарии моя попытка подключить файл chisla.groovy в котором находятся методы ArabRim и RimArab ... Пока неудачно ...
Добавлено (06 апреля 2017, 05:11) --------------------------------------------- Переделанный на Groovy код создающий список длиной равной N, без 0, без повторов чисел, без лакун ...
Код package demo def Vvod () {print "Vvedite n = "; s = System.in.newReader().readLine(); n = s as Integer} def Spisok (n) { order = [] for (int i = 1; i <= n; i++) { j = Math.round(Math.random() * n) if (j == 0) {order << ( j + 1)} else {order << j } } return order } def Bez_X (order) { len = order.size() - 1 len1 = len + 1 for (int i = 0; i <= len; i++) { for (int j = (i + 1); j <= len1; j++) { if (order[j] == order[i]) {order.remove(j)} } len1 = order.size() } return order } def Ok_Spisok (n) { order = Bez_X (Spisok (n)) for (int k = 1; k <= n; k++) { order = Bez_X (order + k) } return order } def Vivod () { print "order = "; println order}
while (1) { Vvod (); if(n == "n") {break} Ok_Spisok (n) Vivod () }
Добавлено (16 апреля 2017, 08:21) ---------------------------------------------
Код def Ok_Spisok (n) { order = Bez_X (Spisok (n)) for (int k = n; 1 <= k; k--) { order = Bez_X (order + k) } return order }
Добавлено (11 мая 2017, 22:00) --------------------------------------------- Следующий код не работает как отдельная прога, а только "в" IDE ...
Код //Main.java public class Main { public static void main(String args[]) { chislo m2 = new chislo(); m2.run(); } }
Код //chislo.groovy import groovy.swing.SwingBuilder import javax.swing.* import java.awt.FlowLayout
public class ArabRim_2 { def Arabrim_2(Arab) { ArabRim m2 = new ArabRim(); def Rim = m2.Arabrim(Arab); return Rim }} def Arab_Rim(Arab) {ArabRim_2 m3 = new ArabRim_2(); Rim = m3.Arabrim_2(Arab)}
public class RimArab_2 { def Rimarab_2(Rim) { RimArab m1 = new RimArab(); def Arab = m1.Rimarab(Rim); return Arab }} def Rim_Arab(Rim) {RimArab_2 m2 = new RimArab_2(); Arab = m2.Rimarab_2(Rim)}
swinger = new SwingBuilder() gui = swinger.frame(title:'Арабские << >> Римские', size: [510, 160]) { panel(layout: new FlowLayout()) { arabrim = new JLabel('Это приложение переводит из Арабской системы счисления в Римскую и обратно!') arabrim.setBorder(BorderFactory.createEtchedBorder()); panel().add(arabrim) panel(layout: new FlowLayout()) { arab = new JLabel('Арабское число:'); panel().add(arab) message1 = textField(columns: 12) button = swinger.button(text: 'Вычислить', actionPerformed: { JOptionPane.showMessageDialog(gui, Arab_Rim(message1.text))}) button = swinger.button(text: 'Очистить', actionPerformed: { message1.selectAll(); message1.cut()})} rim = new JLabel('Римское__число:'); panel().add(rim) message2 = textField(columns: 12) button = swinger.button(text: 'Вычислить', actionPerformed: { JOptionPane.showMessageDialog(gui, Rim_Arab(message2.text))}) button = swinger.button(text: 'Очистить', actionPerformed: { message2.selectAll(); message2.cut()})}} gui.show()
Код //ArabRim.groovy public class ArabRim { String Rim, A, r, r2, r1 Integer i, x, iI, iV, iX, x1 List L, rim = [ "I", "V", "X", "L", "C", "D", "M"] def Arabrim (Arab) { A = Arab.reverse(); i = 0; L = [] for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2 switch (x){ case 4: r = rim[iI] + rim[iV]; break case 9: r = rim[iI] + rim[iX]; break case 1..3: r = ""; for( int j = 0; j < x; j++){ r = r + rim[iI]}; break case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + rim[iI]}; r1 = rim[iV]; r = r1 + r2; break case 0: r = ""; break } ++i; L = L + r } Rim = L.reverse().join(); return Rim } }
Код //RimArab.groovy public class RimArab { String f; Integer Arab Map rimArab = ["I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000] def Rimarab (Rim) { f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC") Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}; return Arab } }
Код class chislo { void run() { throw new UnsupportedOperationException("Not yet implemented"); } }
Добавлено (14 мая 2017, 21:26) --------------------------------------------- "Случайность" списка "усилена" ...
Код def Ok_Spisok (n) { order1 = Bez_X (Spisok (n)) for (int k = n; 1 <= k; k--) { order1 = Bez_X (order1 + k) } order = Bez_X (Spisok (n)) for (i in order1) { order = Bez_X (order + i) } return order }
Добавлено (30 мая 2017, 13:56) --------------------------------------------- При таком изменении кода вывод становится более "информативным":
Код button = swinger.button(text: 'Вычислить', \ actionPerformed: { swinger.optionPane(message: \ "Арабское $message1.text ==> Римское ${Arab_Rim(message1.text)}"). \ createDialog(null, 'Арабские в Римские').show()})
Код button = swinger.button(text: 'Вычислить', \ actionPerformed: { swinger.optionPane(message: \ "Римское $message2.text ==> Арабское ${Rim_Arab(message2.text)}"). \ createDialog(null, 'Римские в Арабские').show()})
litl
Сообщение отредактировал colencor - Вторник, 30 Мая 2017, 13:58 |
|
| |
flatingo | Дата: Вторник, 30 Мая 2017, 17:33 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Поддержу тебя. Молодец что что-то делаешь и развиваешься. Это главное, мазохист
когда-то я уйду в web3
|
|
| |
colencor | Дата: Четверг, 26 Апреля 2018, 13:45 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Дубль программы на Tcl'Tk:
Код ----------------------------------------------------------------------------------------------------------------------------------- swinger = new SwingBuilder() gui = swinger.frame(title:'Арабские << >> Римские', size: [760, 160]) { panel(layout: new FlowLayout()) { arabrim = new JLabel('Это приложение переводит из арабской системы счисления в римскую и обратно!') arabrim.setBorder(BorderFactory.createEtchedBorder()) panel().add(arabrim) panel(layout: new FlowLayout()) { arab1 = new JLabel('Арабское число:') panel().add(arab1) message11 = textField(columns: 12) button11 = swinger.button(text: 'Вычислить', actionPerformed: {message12.setText("${Arab_Rim(message11.text)}")}) /*JRootPane rootPane = SwingUtilities.getRootPane(button11) rootPane.setDefaultButton(button11)*/ button12 = swinger.button(text: 'Очистить', actionPerformed: { message11.selectAll(); message11.cut();message12.selectAll(); message12.cut()}) arab2 = new JLabel('Римское число:') panel().add(arab2) message12 = textField(columns: 12)}
rim1 = new JLabel('Римское число:') panel().add(rim1) message21 = textField(columns: 12) button21 = swinger.button(text: 'Вычислить', actionPerformed: {message22.setText("${Rim_Arab(message21.text)}")}) /* JRootPane rootPane = SwingUtilities.getRootPane(button21) rootPane.setDefaultButton(button21)*/ button22 = swinger.button(text: 'Очистить', actionPerformed: { message21.selectAll(); message21.cut();message22.selectAll(); message22.cut()}) rim2 = new JLabel('Арабское число:') panel().add(rim2) message22 = textField(columns: 12)}} gui.show()
Добавлено (09 августа 2017, 04:36) --------------------------------------------- Другая версия проги:
Код //chislo.groovy import groovy.swing.SwingBuilder import javax.swing.* import java.awt.FlowLayout import java.util.* import java.awt.* import java.awt.event.*
public class ArabRim_2 { def Arabrim_2(Arab) { ArabRim m2 = new ArabRim(); def Rim = m2.Arabrim(Arab); return Rim }} def Arab_Rim(Arab) {ArabRim_2 m3 = new ArabRim_2(); Rim = m3.Arabrim_2(Arab)}
public class RimArab_2 { def Rimarab_2(Rim) { RimArab m1 = new RimArab(); def Arab = m1.Rimarab(Rim); return Arab }} def Rim_Arab(Rim) {RimArab_2 m2 = new RimArab_2(); Arab = m2.Rimarab_2(Rim)}
swinger = new SwingBuilder() gui = swinger.frame(title:'Арабские << >> Римские', size: [540, 160]) { panel(layout: new FlowLayout()) { arabrim = new JLabel('Это приложение переводит из арабской системы счисления в римскую и обратно !') arabrim.setBorder(BorderFactory.createEtchedBorder()) panel().add(arabrim) panel(layout: new FlowLayout()) { arab = new JLabel('Арабское число:') panel().add(arab) message1 = textField(columns: 12) button11 = swinger.button(text: 'Вычислить', actionPerformed: {message2.setText("${Arab_Rim(message1.text)}")}) /*JRootPane rootPane = SwingUtilities.getRootPane(button11) rootPane.setDefaultButton(button11)*/ button12 = swinger.button(text: 'Очистить', actionPerformed: {message1.selectAll(); message1.cut()}) } panel(layout: new FlowLayout()) { rim = new JLabel('Римское число:') panel().add(rim) message2 = textField(columns: 12) button21 = swinger.button(text: 'Вычислить', actionPerformed: {message1.setText("${Rim_Arab(message2.text)}")}) /* JRootPane rootPane = SwingUtilities.getRootPane(button21) rootPane.setDefaultButton(button21)*/ button22 = swinger.button(text: 'Очистить', actionPerformed: {message2.selectAll(); message2.cut()}) }}} gui.show()
Добавлено (10 сентября 2017, 17:39) --------------------------------------------- Совершенно случайный список:
Код def Vvod () {print "Vvedite n = "; s = System.in.newReader().readLine(); n = s as Integer} def Spisok (n) { order = [null]; Q = 0; while (Q < n) { J = 0 t = Math.round(Math.random() * n) if (t != 0) {for (i in order) {if (t != i) {++J} } if (J == order.size()) {order = order + t - null} } order1 = order; Q = order1.size() } return order1 } def Vivod () {print "order1 = "; println order1} while (1) { Vvod (); if(n == "n") {break} Spisok (n) Vivod () }
Добавлено (18 сентября 2017, 21:59) ---------------------------------------------
Код //-------------------------------------------------------- if (J == order.size()) {order = order + t} } order1 = order - null; Q = order1.size() //--------------------------------------------------------
Добавлено (05 октября 2017, 22:08) ---------------------------------------------
Код def Spisok (n) { order = [null]; Q = 0 while (Q <= n) { J = 0; T = Math.round(Math.random() * n) if(T != 0) {for(I in order) {if(T != I) {++J} } if(J == order.size()) {order = order + T} } Q = order.size() } order1 = order - null }
Добавлено (20 ноября 2017, 00:30) ---------------------------------------------
Код def Spisok (n) { order = [0]; Q = 0 while (Q <= n) { J = 0; T = Math.round(Math.random() * n) for(I in order) {if(T != I) {++J} if(J == order.size()) {order = order + T} Q = order.size() } order1 = order - 0 }
Добавлено (26 Апреля 2018, 03:17) --------------------------------------------- Игрушка Puzzle:
Код //puzzle.groovy package groovy
import groovy.swing.SwingBuilder import javax.swing.* import java.awt.FlowLayout import java.util.* import java.awt.* import java.awt.event.*
jfrm = new JFrame('N-размерный puzzle') gbag = new GridBagLayout() gbc = new GridBagConstraints() gbc.fill = GridBagConstraints.BOTH jfrm.getContentPane().setLayout(gbag) jfrm.setSize(550, 550) btnDim = new Dimension(50, 50) gbc.weightx = 0.0 gbc.insets = new Insets(0, 0, 0, 0)
//N = Math.round(Math.random()*10); if (0 <= N && N <= 2) {N = 4} else {return N}
public class Spisok_2 {def spisok_2(N) {Spisok m1 = new Spisok(); def order = m1.spisok(N)}} def spisok(N) {m2 = new Spisok_2(); order = m2.spisok_2(N)} N = 3 chisla = [1, 2, 3, 4, 5, 6, 7, 8, ""]//spisok(N) Tablica() Oglavlenie() jfrm.setVisible(true)
def Tablica() {for (int I = 0; I < N**2; I++) knopka(I, N)} def knopka(I, N) { Y = (int)(I/N); X = I%N jbtnCh = new JButton(text: chisla[I], actionPerformed: {e -> e.getSource().setText(Poisk(I))}) gbc.gridy = Y+1; gbc.gridx = X+1 jbtnCh.setPreferredSize(btnDim) gbag.setConstraints(jbtnCh, gbc) jfrm.getContentPane().add(jbtnCh) } def Poisk(I) { def W = {chisla[F] == ""} if (((F = I-N) >= 0 && W{}) || ((F = I+1) < N**2 && W{}) || ((F = I+N) < N**2 && W{}) || ((F = I-1) >= 0 && W{})) {chisla[F] = chisla[I]; knopka(F, N); chisla[I] = ""} else {"${chisla[I]}"} } GUI глючит, может кто нибудь подсказать решение
Добавлено (26 Апреля 2018, 13:45) --------------------------------------------- Код //Spisok.groovy package groovy public class Spisok { Integer S, J, T, Q List Order def spisok (N) { S = (N as Integer )**2 Order = [0]; Q = 0 while (Q < S) { J = 0; T = Math.round(Math.random() * S) for (i in Order) {if (T != i) {++J}} if (J == Order.size()) {Order = Order + T} Q = Order.size() } Order = Order - 0 + "" } }
litl
Сообщение отредактировал colencor - Четверг, 26 Апреля 2018, 13:47 |
|
| |
|