Update: 调整 生成笛卡尔积 图形块
This commit is contained in:
@@ -489,7 +489,7 @@ export const math_round = {
|
||||
export const text_to_number = {
|
||||
init: function () {
|
||||
var TO_INT_FLOAT =
|
||||
[[Blockly.Msg.MIXLY_TO_INT, 'int'], [Blockly.Msg.MIXLY_TO_FLOAT, 'float'], [Blockly.Msg.MIXLY_TO_BITES, 'b'],[Blockly.Msg.LANG_MATH_BYTE+Blockly.Msg.MIXLY_TO_INT,'bti']];
|
||||
[[Blockly.Msg.MIXLY_TO_INT, 'int'], [Blockly.Msg.MIXLY_TO_FLOAT, 'float'], [Blockly.Msg.MIXLY_TO_BITES, 'b'], [Blockly.Msg.LANG_MATH_BYTE + Blockly.Msg.MIXLY_TO_INT, 'bti']];
|
||||
this.setColour(MATH_HUE);
|
||||
this.appendValueInput('VAR')
|
||||
.appendField(new Blockly.FieldDropdown(TO_INT_FLOAT), 'TOWHAT');
|
||||
@@ -533,7 +533,7 @@ export const turn_to_int = {
|
||||
init: function () {
|
||||
this.setColour(MATH_HUE);
|
||||
this.appendValueInput('VAR')
|
||||
.appendField(Blockly.Msg.LANG_MATH_BYTE+Blockly.Msg.MIXLY_TO_HEX);
|
||||
.appendField(Blockly.Msg.LANG_MATH_BYTE + Blockly.Msg.MIXLY_TO_HEX);
|
||||
this.setOutput(true, Number);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOHEX)
|
||||
}
|
||||
@@ -547,16 +547,18 @@ export const generate_cartesian_product = {
|
||||
init: function () {
|
||||
this.setColour(MATH_HUE);
|
||||
this.itemCount_ = 1;
|
||||
this.updateShape_();
|
||||
this.setMutator(new Blockly.icons.MutatorIcon(['lists_create_with_item'], this));
|
||||
this.appendValueInput('repeat')
|
||||
this.appendDummyInput('DUMMY')
|
||||
.appendField(Blockly.Msg.MIXLY_PRODUCT + Blockly.Msg.MIXLY_GENERATE_CARTESIAN_PRODUCT);
|
||||
this.appendValueInput('REPEAT')
|
||||
.appendField(Blockly.Msg.MIXLY_EVERY_PER_ELEPER_ELEMENT);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.CONTROLS_REPEAT_TITLE_TIMES);
|
||||
this.setPreviousStatement(false)
|
||||
this.setNextStatement(false)
|
||||
this.setOutput(true)
|
||||
this.setPreviousStatement(false);
|
||||
this.setNextStatement(false);
|
||||
this.setOutput(true);
|
||||
this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP);
|
||||
this.updateShape_();
|
||||
},
|
||||
/**
|
||||
* Create XML to represent list inputs.
|
||||
@@ -617,7 +619,7 @@ export const generate_cartesian_product = {
|
||||
// Reconnect any child blocks.
|
||||
for (var i = 0; i < this.itemCount_; i++) {
|
||||
if (connections[i]) {
|
||||
this.getInput('ADD' + i).connection.connect(connections[i]);
|
||||
this.getInput(`ADD${i}`).connection.connect(connections[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -630,7 +632,7 @@ export const generate_cartesian_product = {
|
||||
var itemBlock = containerBlock.getInputTargetBlock('STACK');
|
||||
var i = 0;
|
||||
while (itemBlock) {
|
||||
var input = this.getInput('ADD' + i);
|
||||
var input = this.getInput(`ADD${i}`);
|
||||
itemBlock.valueConnection_ = input && input.connection.targetConnection;
|
||||
i++;
|
||||
itemBlock = itemBlock.nextConnection &&
|
||||
@@ -647,9 +649,9 @@ export const generate_cartesian_product = {
|
||||
if (this.getInput('EMPTY')) {
|
||||
this.removeInput('EMPTY');
|
||||
} else {
|
||||
var i = 0;
|
||||
while (this.getInput('ADD' + i)) {
|
||||
this.removeInput('ADD' + i);
|
||||
let i = 0;
|
||||
while (this.getInput(`ADD${i}`)) {
|
||||
this.removeInput(`ADD${i}`);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -658,11 +660,9 @@ export const generate_cartesian_product = {
|
||||
this.appendDummyInput('EMPTY')
|
||||
.appendField(Blockly.Msg.MIXLY_EMPTY_REMINDER);
|
||||
} else {
|
||||
for (var i = 0; i < this.itemCount_; i++) {
|
||||
var input = this.appendValueInput('ADD' + i);
|
||||
if (i == 0) {
|
||||
input.appendField(Blockly.Msg.MIXLY_PRODUCT+Blockly.Msg.MIXLY_GENERATE_CARTESIAN_PRODUCT);
|
||||
}
|
||||
for (let i = 0; i < this.itemCount_; i++) {
|
||||
this.appendValueInput(`ADD${i}`);
|
||||
this.moveInputBefore(`ADD${i}`, 'REPEAT');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -50,15 +50,15 @@ export const math_bit = function (_, generator) {
|
||||
|
||||
export const math_arithmetic = function (a, generator) {
|
||||
var b = {
|
||||
ADD: [" + ", generator.ORDER_ADDITIVE],
|
||||
MINUS: [" - ", generator.ORDER_ADDITIVE],
|
||||
MULTIPLY: [" * ", generator.ORDER_MULTIPLICATIVE],
|
||||
DIVIDE: [" / ", generator.ORDER_MULTIPLICATIVE],
|
||||
QUYU: [' % ', generator.ORDER_MULTIPLICATIVE],//增加取余操作
|
||||
ZHENGCHU: [' // ', generator.ORDER_MULTIPLICATIVE],//增加整除操作
|
||||
POWER: [" ** ", generator.ORDER_EXPONENTIATION]
|
||||
}[a.getFieldValue("OP")],
|
||||
c = b[0],
|
||||
ADD: [" + ", generator.ORDER_ADDITIVE],
|
||||
MINUS: [" - ", generator.ORDER_ADDITIVE],
|
||||
MULTIPLY: [" * ", generator.ORDER_MULTIPLICATIVE],
|
||||
DIVIDE: [" / ", generator.ORDER_MULTIPLICATIVE],
|
||||
QUYU: [' % ', generator.ORDER_MULTIPLICATIVE],//增加取余操作
|
||||
ZHENGCHU: [' // ', generator.ORDER_MULTIPLICATIVE],//增加整除操作
|
||||
POWER: [" ** ", generator.ORDER_EXPONENTIATION]
|
||||
}[a.getFieldValue("OP")];
|
||||
var c = b[0],
|
||||
b = b[1],
|
||||
d = generator.valueToCode(a, "A", b) || "0";
|
||||
a = generator.valueToCode(a, "B", b) || "0";
|
||||
@@ -290,7 +290,7 @@ export const text_to_number = function (_, generator) {
|
||||
var towhat = this.getFieldValue('TOWHAT');
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
if (towhat == 'b') return ['' + str + '.encode("utf-8")', generator.ORDER_ATOMIC];
|
||||
else if(towhat == 'bti') return['int.from_bytes('+str+',"big")',Blockly.Python.ORDER_ATOMIC];
|
||||
else if (towhat == 'bti') return ['int.from_bytes(' + str + ',"big")', generator.ORDER_ATOMIC];
|
||||
return [towhat + "(" + str + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
@@ -310,15 +310,15 @@ export const turn_to_int = function (_, generator) {
|
||||
}
|
||||
|
||||
export const generate_cartesian_product = function (_, generator) {
|
||||
generator.definitions_.import_itertools = "import itertools";
|
||||
var re = generator.valueToCode(this, 'repeat', generator.ORDER_ATOMIC);
|
||||
var code = new Array(this.itemCount_);
|
||||
var default_value = '0';
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || default_value;
|
||||
generator.definitions_.import_itertools = 'import itertools';
|
||||
let re = generator.valueToCode(this, 'REPEAT', generator.ORDER_ATOMIC);
|
||||
let items = new Array(this.itemCount_);
|
||||
for (let n = 0; n < this.itemCount_; n++) {
|
||||
items[n] = generator.valueToCode(this, `ADD${n}`, generator.ORDER_NONE) || '0';
|
||||
}
|
||||
let code = '';
|
||||
if (this.itemCount_) {
|
||||
code = `itertools.product(${items.join(', ')}, repeat=${re})`;
|
||||
}
|
||||
// var code = '[' + code.join(', ') + ']';
|
||||
// var code = 'itertools.product('+'repeat='+re+')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
Reference in New Issue
Block a user