Примеры ИИ запросов

Примеры ИИ запросов

Примеры ИИ запросов - генератор псевдослучайных чисел на Java с помощью ИИ


      Разработаем полный Android Java проект генератора псевдо-случайных чисел (ГПСЧ) с помощью ИИ chat.deepseek.com с использованием одного запроса.
      Качественный генератор псевдо-случайных чисел использует алгоритм Блюма Блюма Шуба, генерирует Big Int числа от 1024 бит и больше.
      Запрос проверялся в бесплатной версии Deepseek. Java проект компилировался в Android Studio для смартфона Samsung S21
      Код приложения получился полностью рабочим.
      
      
Генератор ПСЧ >>
      

Программирование с помощью ИИ


      Составим запрос к ИИ:
      
      Сгенерируй максимально простой Java код приложения DeepseekBlume для Android 11 для SDK 33.
      Разметка в Activity_main.xml должна позволять вертикальную прокрутку экрана для просмотра всего содержимого.
      Нужно запросить и получить все необходимые для работы приложения разрешения, в том числе и разрешение на чтение и запись данных
      
      В самом верху экрана разместить поле EditText для ввода текста. В EditText в подсказку Hint написать текст: Введите не менее 100 символов для создания ключа.
      При вводе текста в это поле надо проверять количество введенных символов. Не разрешать вводить в это поле EditText больше 120 символов.
      Как только количество введенных символов в поле EditText станет больше 100, выполнить следующие действия в пункте NN
      
      Начало пункта NN
      
      Создадим Int переменную E=2048
      
      Нужно проверить в папке Download смартфона наличие текстового файла digital.bbs в формате JSON
      Если файла digital.bbs в папке Download НЕТ, то выполнить лействия в пункте 1. Если в папке Download есть файл digital.bbs то пункт 1 не выполнять, а прочитать значения чисел P, Q, L из файла digital.bbs
      
      Начало пункта 1.
      Приложение должно вычислить два простых Big Int числа P и Q размерности E бит, удовлетворяющих условию, что каждое из них при делении на 4 даёт остаток 3
      На экране приложения должны располагаться несколько TextView
      В один TextView необходимо написать число P
      Во второй TextView необходимо написать число Q
      Необходимо вычислить число M=P*Q
      Выбираем случайное Big Int число L размерности E бит, взаимно простое с M
      Создать в папке Download смартфона текстовый файл digital.bbs и записать в него вычисленные значения чисел P, Q, L в формате JSON
      Конец пункта 1.
      
      Необходимо вычислить число M=P*Q
      
      Вычисляем Big Int число K = L*L (т.е. как L в степени 2)
      
      Находим Big Int число H=K mod M
      В третий TextView необходимо записать Big Int число H
      
      Далее создадим функцию DigCreate, которую используем E раз.
      Создадим Big Int переменную NumRnd, с которой будем производить битовые операции.
      
      Функция DigCreate делает E раз следующее:
      
      Начало пункта 2.
      - вычислим число N=(H*H) mod M
      - из числа N выберем самый младший бит (бит чётности)
      - в числе NumRnd сделаем сдвиг битов влево на одну позицию. При этом самый старший бит (самый правый) отбрасывается
      - запишем значение из младшего бита числа N в младший бит числа NumRnd
      - присвоим значение числа N числу H
      - повторим действия, начиная с пункта 2.
      
      После этого в числе NumRnd должны быть заполнены все биты.
      
      Напишем число NumRnd в четвёртый TextView
      
      Далее с числом NumRnd нужно произвести битовые операции.
      1. Запомнить значение младшего бита (бита чётности)
      2. Сдвинуть все биты числа NumRnd на один бит вправо
      3. Записать запомненный в пункте1 бит чётности в самый старший (правый) бит числа NumRnd
      
      Написать число NumRnd в пятый TextView
      
      Конец пункта NN
      
      (c) by
Valery Shmelev https://t.me/llmsource/243



      
      AI Powered Code Generation
      
      ИИ сгенерировал следующие файлы:
      
      MainActivity.java
      
          package com.example.deepseekblume;
      
    import android.Manifest;
    import android.content.pm.PackageManager;
    import android.os.Build;
    import android.os.Bundle;
    import android.os.Environment;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;
    import org.json.JSONObject;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.math.BigInteger;
    import java.util.Random;
      
    public class MainActivity extends AppCompatActivity {
      
        private final int E = 2048; // Размерность в битах
        private final int STORAGE_PERMISSION_CODE = 100;
        private boolean isProcessing = false;
      
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            // Настраиваем EditText
            EditText inputEditText = findViewById(R.id.inputEditText);
            inputEditText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
      
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {}
      
                @Override
                public void afterTextChanged(Editable s) {
                   // Ограничиваем максимальную длину 120 символов
                   if (s.length() > 120) {
                      s.delete(120, s.length());
                      Toast.makeText(MainActivity.this, "Максимум 120 символов", Toast.LENGTH_SHORT).show();
                      return;
                   }
      
                   // Проверяем, если введено более 100 символов и еще не обрабатываем
                   if (s.length() >= 100 && !isProcessing) {
                      isProcessing = true;
                      
                      // Проверяем разрешения перед началом работы
                      if (checkStoragePermission()) {
                          startAppLogic();
                      } else {
                          requestStoragePermission();
                      }
                   }
                }
            });
      
            // Инициализируем TextView
            findViewById(R.id.textViewP);
            findViewById(R.id.textViewQ);
            findViewById(R.id.textViewH);
            findViewById(R.id.textViewNumRnd);
            findViewById(R.id.textViewNumRndRotated);
        }
      
        private void startAppLogic() {
            TextView textViewP = findViewById(R.id.textViewP);
            TextView textViewQ = findViewById(R.id.textViewQ);
            TextView textViewH = findViewById(R.id.textViewH);
            TextView textViewNumRnd = findViewById(R.id.textViewNumRnd);
            TextView textViewNumRndRotated = findViewById(R.id.textViewNumRndRotated);
      
            BigInteger p, q, l;
      
            // Проверяем наличие файла digital.bbs
            File bbsFile = new File(Environment.getExternalStoragePublicDirectory(
                   Environment.DIRECTORY_DOWNLOADS), "digital.bbs");
      
            if (bbsFile.exists()) {
                // Читаем значения из файла
                try {
                    FileReader reader = new FileReader(bbsFile);
                    StringBuilder jsonBuilder = new StringBuilder();
                    int character;
                    while ((character = reader.read()) != -1) {
                        jsonBuilder.append((char) character);
                    }
                    reader.close();
      
                    JSONObject json = new JSONObject(jsonBuilder.toString());
                    p = new BigInteger(json.getString("P"));
                    q = new BigInteger(json.getString("Q"));
                    l = new BigInteger(json.getString("L"));
      
                    textViewP.setText("P (из файла):\n" + p.toString());
                    textViewQ.setText("Q (из файла):\n" + q.toString());
                    Toast.makeText(this, "Данные загружены из файла", Toast.LENGTH_SHORT).show();
      
                } catch (Exception e) {
                    Toast.makeText(this, "Ошибка чтения файла", Toast.LENGTH_SHORT).show();
                    isProcessing = false;
                    return;
                }
            } else {
                // Генерируем новые значения
                p = generatePrime();
                q = generatePrime();
      
                // Вычисляем M = P * Q
                BigInteger m = p.multiply(q);
      
                // Выбираем случайное L, взаимно простое с M
                l = generateCoprime(m);
      
                // Сохраняем в файл
                saveToFile(p, q, l);
      
                textViewP.setText("P (сгенерировано):\n" + p.toString());
                textViewQ.setText("Q (сгенерировано):\n" + q.toString());
                Toast.makeText(this, "Новые данные сгенерированы и сохранены", Toast.LENGTH_SHORT).show();
            }
      
            // Продолжаем вычисления
            try {
                // Вычисляем M = P * Q
                BigInteger m = p.multiply(q);
      
                // Вычисляем K = L * L
                BigInteger k = l.multiply(l);
      
                // Вычисляем H = K mod M
                BigInteger h = k.mod(m);
      
                // Генерируем NumRnd с помощью функции DigCreate
                BigInteger numRnd = digCreate(h, m);
      
                // Выполняем циклический сдвиг вправо
                BigInteger numRndRotated = rotateRightWithParity(numRnd);
      
                // Отображаем оставшиеся числа
                textViewH.setText("H = (L? mod M):\n" + h.toString());
                textViewNumRnd.setText("NumRnd (" + E + " бит):\n" + numRnd.toString());
                textViewNumRndRotated.setText("NumRnd (циклический сдвиг):\n" + numRndRotated.toString());
      
                isProcessing = false;
      
            } catch (Exception e) {
                Toast.makeText(this, "Ошибка вычислений: " + e.getMessage(), Toast.LENGTH_SHORT).show();
                isProcessing = false;
            }
        }
      
        private boolean checkStoragePermission() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                return Environment.isExternalStorageManager();
            } else {
                return ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
                        ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
            }
        }
      
        private void requestStoragePermission() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                try {
                    android.content.Intent intent = new android.content.Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                    intent.addCategory("android.intent.category.DEFAULT");
                    intent.setData(android.net.Uri.parse(String.format("package:%s", getApplicationContext().getPackageName())));
                    startActivityForResult(intent, STORAGE_PERMISSION_CODE);
                } catch (Exception e) {
                    android.content.Intent intent = new android.content.Intent();
                    intent.setAction(android.provider.Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
                    startActivityForResult(intent, STORAGE_PERMISSION_CODE);
                }
            } else {
                ActivityCompat.requestPermissions(this,
                        new String[]{
                              Manifest.permission.WRITE_EXTERNAL_STORAGE,
                              Manifest.permission.READ_EXTERNAL_STORAGE
                        },
                        STORAGE_PERMISSION_CODE);
            }
        }
      
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            if (requestCode == STORAGE_PERMISSION_CODE) {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    startAppLogic();
                } else {
                    Toast.makeText(this, "Разрешения отклонены", Toast.LENGTH_LONG).show();
                    isProcessing = false;
                }
            }
        }
      
        @Override
        protected void onActivityResult(int requestCode, int resultCode, android.content.Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == STORAGE_PERMISSION_CODE) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                    if (Environment.isExternalStorageManager()) {
                        startAppLogic();
                    } else {
                        Toast.makeText(this, "Разрешение отклонено", Toast.LENGTH_LONG).show();
                        isProcessing = false;
                    }
                }
            }
        }
      
        private void saveToFile(BigInteger p, BigInteger q, BigInteger l) {
            try {
                JSONObject json = new JSONObject();
                json.put("P", p.toString());
                json.put("Q", q.toString());
                json.put("L", l.toString());
      
                File downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
                File bbsFile = new File(downloadsDir, "digital.bbs");
      
                FileWriter writer = new FileWriter(bbsFile);
                writer.write(json.toString());
                writer.flush();
                writer.close();
      
            } catch (Exception e) {
                Toast.makeText(this, "Ошибка сохранения файла", Toast.LENGTH_SHORT).show();
            }
        }
      
        private BigInteger generatePrime() {
            Random random = new Random();
            
            while (true) {
                BigInteger candidate = new BigInteger(E, random);
                if (candidate.mod(BigInteger.valueOf(4)).equals(BigInteger.valueOf(3))) {
                   if (candidate.isProbablePrime(100)) {
                      return candidate;
                   }
                }
            }
        }
      
        private BigInteger generateCoprime(BigInteger m) {
            Random random = new Random();
            
            while (true) {
                BigInteger l = new BigInteger(E, random);
                if (l.gcd(m).equals(BigInteger.ONE)) {
                   return l;
                }
            }
        }
      
        private BigInteger digCreate(BigInteger initialH, BigInteger m) {
            BigInteger h = initialH;
            BigInteger numRnd = BigInteger.ZERO;
            
            for (int i = 0; i < E; i++) {
                BigInteger n = h.multiply(h).mod(m);
                BigInteger lsb = n.and(BigInteger.ONE);
                numRnd = numRnd.shiftLeft(1);
                numRnd = numRnd.or(lsb);
                h = n;
            }
            
            return numRnd;
        }
      
        private BigInteger rotateRightWithParity(BigInteger num) {
            BigInteger lsb = num.and(BigInteger.ONE);
            BigInteger shifted = num.shiftRight(1);
            BigInteger rotatedLsb = lsb.shiftLeft(E - 1);
            return shifted.or(rotatedLsb);
        }
    }
      
      Подробнее читаем здесь:
      
      
AI Powered Code GENERATION >>
      
      
      AI Powered Code GENERATION
      

Разработка кода в ИИ
AI Powered Code GENERATION
Разработка программ в ИИ. Разработка программ в ИИ - примеры запросов

AI Powered Code GENERATION